implement pass() directly, remove timeout(), replace some filter functions