add pipe and empty funcs