modernize to support node and update stylistically