New decorator-based way of making singleton methods

Much easier to extend, and the code looks a lot nicer :)