more refactoring to ease building etitors