Initial code

Based on my integration tests it needs applied to each so that versions get calculated but a lot of the configuration only goes on the top level.