implements preference panel. #7 #8