finished just need to add comments