updated init function