simpler inheritance pattern