added sensible toString methods