add more function support