Some more work to Optics, I think the objective array is correct but still need to test