everything except for upload image
commited