Generalised a few things, to get a clean starting point...