i could've written more, but i think the cs is good enough to be accepted