refactored - can add any component model, submodel