first commit, code is little messy