Made func_t an abstract class, with one subclass (concrete_func_t, whose implementation is not substantially changed).