add optional init