FreeCamera added, additional refactoring