Rework function turn and argument passing