visucam: split controllers to a separate file, shapes are now selectable, firebase backend is now "injected"