init part is revised