Added some comments and operator overloading