We should separate the monolithic code base in to 2 separate modules, one for the framework and one for the commons library. This will allow users to get started easily, whilst not enforcing the library on them if they so choose not to use it so they can write algorithms themselves.