added more function support