I believe the difference is that you're setting the member value ontick to a function rather than making a new function called ontick. It's more like C structs that can contain an infinite number of any type <3 <3 For example: a = {}a.a = function()print("a.a was called!");endfunction a.b()print("a.b was called!");endThis creates a "class" called "a" "a.a" is a function that prints "a.a was called!" to stdout. "a.b" is a function that prints "a.b was called!" to stdout. The difference is, "a.a" is actually PART OF "a". It's included in the "class" itself, while "a.b" is just a function that starts with "a." Functionally, you'll almost never notice a difference, but it can cause some horrible errors later if something goes wrong. Plus it's just better code style, as well as future proof. You may ask why this applies to a script outside of a group, once again the answer is that it's better code style. If you do that with ALL functions, it's more human readable and makes it carry over smoothly into member functions.