Towards More Expressive and Usable Types for Dynamic Languages