not that anything is wrong with this code, but it looks pretty messy and hard to read