http://techiworks.com/how-you-define-abstract-class/