Reverting mistaken merge of function_rework branch.

This reverts commit 712e97ac28e66b51c38012e8303c48a858585114.
Reverting mistaken merge of function_rework branch.

This reverts commit bdd165fde190dbb099ca50178be5c0bc333a8a32.
Reverting mistaken merge of function_rework branch.

This reverts commit 283881f7210531e69e05e5c29ddbf49b950ec407.
Reverting mistaken merge of function_rework branch.

This reverts commit 072cb0012bc3d293757e68127f38d65323649379.
Reverting mistaken merge of function_rework branch.

This reverts commit 81102ee88c964d46d19c4401537d1d773db0c08c.
Reverting mistaken merge of function_rework branch.

This reverts commit 9094f5d0f44a27886bce9bb021bd554670bebca7.