Added more exhaustive tests. Merged @erikthedeveloper methods for enforcing valid types.