initialize first, optional init