these methods should also be `protected`?