Extend definition

References #27 

@chrisguitarguy Just made a few small changes but happy to merge, would you like to move your abstraction of the duplicated methods within definitions over to this branch for attribution?