add variable evaluation in instruction execution and do refactoring