add recorder func..but uncomplete