add preventRecursiveFunction for each method