add some functionl