I'll answer to best what I know
* 1\. object is preferable if you want value-type, while ref object is for
reference-type (it's obvious from the name tho, ). I usually use
reference-type when it's costly to create it such as IO, Files, memory etc.
When using ref object, new is required although the compiler can infer it and
you can use the syntax like object.
* 3\. View template as a block labeled snip of code. So when using template
you put "the block of code" in where you invoke the template
* 4\. For local header, you put it `"\"header.h\""` instead of `"<header.h>"`