factored rules into protected methods