sync with rogerwang/node