2to3 and trial and error. may be buggy