improved __tostring