abstract max types