tweak data object and refactor