hooray for instancetype!