In reply to @tvoyglaza "You can also do": There are a number of things that my macro does to make things more ergonomic than normal nim. -automatic factory proc generation that calls an init method -implicit self parameter and a "~" shorthand -nicer syntax for getters and setters -extremely concise syntax for method overrides using a "hook" keyword -forwards all proc and method declarations for you -context macro that forwards all method declarations for multiple classes at once -compound assignment support for setters