Python 3.x compatibility and cleanup