Another way to do this using the dynamic call stack