add some extra funtion