start implementing the preference class