abstract class:

http://youtu.be/naJQVlTmHdU?t=5m26s