use 2to3 refactor tool
switched to a metaclass-based system instead of using a decorator