a few changes after watching the solution video, will add a few more methods tomorrow