Use throw() everywhere.
Make sure funcs are declared before using them.

I don't like predeclaring, unless I really have to.