move to ujson
some optimizations, not very good