Thanks for the great comments - I'll work through it one-by-one and update the post when (eventually) I solve it to help any others with a similar problem.