add sorting function