Added controller since we need one. Also refactoring is needed and design could use some adjustments.