use of (instancetype) is more modern