improved toString
refactored