Is this actually necessary? I thought you could get by with just the `interface` implementation.