If you spot any bugs in my solutions, it's because I've deliberately left them in as an exercise for the reader !!! :)