working for both python 2 and 3 and more tests added