refactoring and can compile into python now etc