DeriveTraversable needed (for GHC 7.8 I think?)