probably half of the js version