Refactor - Explicit the intermediary types to display much clearly the pattern