https://dev.nuclearapp.ca/posts/misc/function-signature/