Useful Type Systems