introduce commands instead calling function directly