refactoring + frustum + camera