initial commit, NB: There's a lot of experimental/junk code here to remove soon