implement read preferences