Changing interface to support Python 2.7 and moving to strictly decorator style