more sound OOP work