Attempt 2. (Doesn't exactly follow tutorial. Uses fundeps for avoid code
drudgery.)