Basic implementation with monkey patching