Fix upload logic to report error when same file name file uploaded.
Add constructor validation.
Remove unnecessary attribute author.
Add public & private tag mechanisum.