Tail recursion optimization
Rename warnings constant names and messages