re-arranging the source code to split out files. adding a small factory set up to make development easier with multiple files
strict, and some formatting
build with new file structure and factory