preference function modified