We're also going to need this for `IEditController`. Separating all of these classes will also keep everything much more maintainable with all of these associated structs.