self methods should be protected