added private constructor
refactored controller