I maybe wrong about "proper OOP", but at least this is how I understand it.