no strict 'vars'; no warnings 'recursion';