Today's applications need the functionality of the Grid to break freeof single resource limitations, and in turn, the Grid needs applications in order to properly evolve. Why then are there currently so few applications using grids? We describe some of the problems faced by application developers in moving to the Grid, and show how grid application frameworks should overcome these difficulties. Such frameworks will define the relationship between the Grid and applications, providing consistent abstract interfaces to grid operations and allowing applications to include these operations independently from their actual implementation. These user interfaces should be application focused, capturing the semantics of the underlying operations, then driving grid developmen tto support these needs. Building the right interfaces motivates a detailed classification of applications and operations for the grid, and we provide a simple taxonomy in this paper, outlining important new directions in which it should be extended. We describe the rationale and design of a Grid Application Toolkit in the GridLab project, which will provide a comprehensive language and implementation neutral framework for encapsulating grid operations that will greatly simplify and accelerate future grid application development.