designing basic OO structure