addition of crud/rest api, plus a load of changes to allow this kind of thing to be functionally tested