Added explicit checks for type kind and removed implicit checks that were built in to old checks
Significant refactor