First commit.

Early unfinished version.