convenience initializer and convenience constructor