refactor info generation