Reorganize things and improve the has_tostring traits class