normal_prepare
normal_execute
This was done separately to make it easier to follow the changes in the previous commit.