add many new function