Cleaned up discrete type support