Modernize to support Python 2 and 3