app data collect refactor