starting to refactor to use as base for jackson