You should implement a `Product` interface instead