abstract classes by Horstmann