There is a lovely module in the standard library called 'forwardable' which provides a new peice of class syntax (actually just a normal 'class' method), called `#delegate`, which essentially writes the boilerplate `def foo; @ivar.foo; end` method for you. I don't know how possible it is to wrap up a location in a class, but between forwardable and that, you could wrap up these four lines as `delegate [:start_x, :start_y, :end_x, :end_y] => :location`, instead of spreading them on four lines.