First commit, lots of code taken from the Products Plugin to get it started.