做了三个basic function