implemented proper self tail recursion

only when with fixed number args