And finally there we go. A more object oriented approach.