feedback by dave cridland, text tweaks by stpeter