protected methods