Base implementation

Name is a bit generic: same goes for the interface