exceptions, try, catch
fully functional todo