Some cool type checking stuff