One issue: 
```
In[1]:= Through[(f + g)[x, y], Plus]
 : Recursion depth of 200 exceeded.
Out[1]= $Aborted
```
By my reasoning this should remain unevaluated (since the `Through[expr, h]` pattern isn't implemented).
Perhaps a bug in the pattern matching. Any ideas?