refactor, resonemanng