local PWClass = {} local function MetaCall(cls, ...) local inst = { __CLASS = cls } cls.ctor(inst, ...) return setmetatable(inst, cls) end function PWClass.derive(name, base) local cls = { __CLASS_NAME = name } cls.__index = cls return setmetatable(cls, { __call = MetaCall }) end return PWClass