updated  init function