user preferences almost implemented