Base implementation

As said before, I disagree with `protected`