there could be some edge cases though, I guess I would have to think about it more