add reasonable toString methods