#18 main controller

Basic implementation of the main controller component, closes #18