dancing around abstract classes