Enhanced OOP

Closes enhancement #3