split out sort methods & interface into separate templates
add support for negative subsetting