make filtering asynchoronous