this method should be protected