requires ctype ext