updating olution
More documentation and cleaning up