added inverse ordering etc