This is not an exhaustive list of TODO items.

* Write a bunch of tests for the exception API

* Consider removing :lexical tests in t/* and convert them to using
  autodie.  The :lexical option is no longer officially supported in
  Fatal.

* (More?) tests for user defined subs!

* Define roles properly.

* Trawl through perlfunc to find which things autodie may apply to.

* Generate a good way to allow subroutines to register themselves
  with roles and message handlers, possibly defining their own
  exception handler to use.

* Provide an autodie mixin which at least provides expected autodie
  behaviours, even if someone wants to use their own exception class.

* Provide a nicer way to override message handlers.

* Finalise the exception interface.

* Write a huge amount of documentation.

* Write a huge amount of tests.

* Figure out how to get it all running on Perl 5.8
    * Can it actually run in theory? (see autobox for an example)
    * Remove all the 5.10 things from the code (~~ and given/when)
    * Make things like overloading ~~ only happen in 5.10+

* Write tests to make sure that nothing clobbers $@ accidently,
  especially in autodie::exception.

* Explain :lexical prior to the DIAGNOSTICS section in Fatal.pm  (or
  remove)

* Fill in Fatal version in GOTCHAS in Fatal.pm
