rationalise our collection of different Kernel types - separate vector map and reduce functions into independent modules
more tidying up