a lot of changes, diverging significantly from the last working version