Better toString() and a main method