Not a fan of the deepcopy inside the constructor, why don't you initialize the variables here ? I though about creating a table inside .new(), but I really wanted to keep functions and variables separated and I like C++ style class declaration. (My main language is C++). Initializing inside .new() ...