complete all the method