merging in all Will's changes