almost done, but a lot of cleanup left to do