tutorial 29
tidy up code