finished OOP, refactoring
stable version 2.0