type order preserving list sorting