This project has given me more null pointers than I ever want in my entire life