http://techiworks.com/what-is-abstract-class-and-what-is-use/