Initial commit. Buggy, not feature complete