compatible with roslib.js