return chan instead, allows consumer to batch requests