Failures 2.0 failure objects

This is a big change, so I'm open to suggestions/additions/improvements.