commit most of the code

up to date version of the project. see README.