almost done, still a little more work to be done