Is it necessary to call `#to_sym` on the relation name? You already do it in the `#[]` method, plus it should probably be part of the contract. I think unnecessary usage of `#to_*` should be removed from inside a system.. it's fine at the boundaries where you've got user input coming in, but once you get inside the system I think it's safe to assume a specific interface.