most changes, maybe a few more to do