Augment an object by adding functionality before, after or around a method