Create preliminary version. Works but has some TODOs.