implementation in node. please review and pull.