adapt IBuyable here