Many of Tom's suggestions implemented