instancetype constructor methods