add init & finish func