added python 3 compatibility