add optional init callback