added some more methods and changed diagram