added list and discriminated unions