add pipe and empty funcs 2