implements Maybe