preferability function added