compile funcs