Did lots of changes, almost done