a lot of changes, I had to commit earlier