use function! instead of function