Started walking towards ver 2.0, refactoring using traits, close #4