add sortbyvalue function