First commit, need to clean up each function.