Extract listing search logic to separate class