must pass self to parent's constructor