I'm pondering how I could make this shorter. I need to look up on more preprocessor commands and what I'm allowed to do with them