modify MVCP so the view doesn't know the model
modify visibility of createComponent to protected