forgot the static api... now also requires callback argument for listen/capture