changing to self.func to c-type, yet yielding no much difference