make preference manager an interface