move to lift-json, update some logic