Been working on this because I'm stupid