refactoring to prepare for the next use case