instancetype, removed unneeded asserts