Let's see...

* `DeriveDataTypeable` lets us `derive (Typeable)`, which is probably required by how `acid-state` is serializing things. I wouldn't worry about this.
* `MultiParamTypeClasses` is needed to define `instance SnapletAcidState.HasAcid CaaAdmin FailedEvents`
* `OverloadedStrings` all over the place, I'm sure. A lot of things accept `Text`, but by default `"foo"` is a `String`. Without this extension, you have to manually call `Text.pack`, which is a PITA.
* `TemplateHaskell` is used to automatically derive stuff for `acid-state`
* `ViewPatterns` lets you apply a function to a binding in a pattern match. I can't seem to find where I'm actually doing that, but I'm sure I am. In short,

```haskell
foo (f -> y) = ...
```

Is short hand for:

```haskell
foo x = let y = f x in ...
```