Added some comments/javadocs for better descreption