I see an uncomfortable number of hard coded constants scattered about. Perhaps if you're going to make this change it wouldn't be a bad idea to pull these various constants out into one place?