refactor: extract common logic