Create datamodel

I realised after doing this is would probably have been better to create them one by one.  We could cherry pick the commits rather than merging the branch?