add begin and end funcs