implement constructor except 2