needed a lot of help from the book