fixed preference function