First commit, still skels most, implementing soon.