todo: add sort_order support