added comments, and usage methods