made things a little prettier with the magic of typedef