incorporated all of Gareths suggestions