exploring methods of building difficult classes