hmm, erasure probably taketh away too much -- maybe use a TypeMap that widens dependent types?