add pipe and empty funcs 3