`TODO` refactor into separate methods