refactor using Jackson