refactored desired_* methods into one