first commit, will modify the code later