Added a preference class framework