protected method