refactor to inherit from builder