final commit, refactored a little bit, uml diagram created