Initial files - practically all work done by @danscotton