Applied many of Steve's suggestions