OOP Updated version.