fix functools bug