small design changes to simplify