node and browser compatibility