Generalize
Add support for C