First object oriented implementation.