separate the key handler and add the ability to switch fov calculation between objects