allow description to be empty str: notice: bool() equals Flase
change data organizaion way
add mode option to descide return object or json string
combine sort and cal_sum operation