Major Update

Using object-oriented approach.