almost done! lots of changes