moved all initialization from initialize() to train(); removed
initialize()
to simplify moved the code from some methods to computeTheta
added more documentation
minor refactoring + some more comments