Minor point: This pattern of grouping the three axes into a single vector, happens often enough here, I wonder if it shouldn't be made into a private utility method.