Inital working release. Needs more documentation and tests