put some more java doc to explain more