Commit first version, note quite compiling yet