non js version