Full python 3 compat