specifying instancetype as return type for convenience and init methods