refactor gson