Compatible with Python 2 and 3