static variables
recursion