Updated one more time, still fleshing out the bugs.