extract related logic to protected methods