added toString and overloaded methods