more code and the framework
some cleanup