Proper OO hierarchy taking shape