make sort actually strongly-typed across the board; lose the sort.Interface bits