almost done just need more testing and edge cases like KEY ERROR