Initial commit, not fully working.