First commit, it is unfinished and bad.