This paper settles a long-standing open question of computational geometry: Is it possible to compute all k intersections between n arbitrary line segments in time linear in k? We answer this question affirmatively by presenting the first algorithm with a running time of the form O(k+f(n)), where I is a sub quadratic function of n. The function f we achieve is actually quasi-linear in n, which makes our algorithm the most efficient to date for each value of k. To obtain this result we must turn away from traditional, sweep-line-based schemes. Instead, we introduce a new hierarchical strategy for dealing with segments without ever reducing the dimensionality of the problem. This framework is used to solve other related problems. In particular, we are able to present the first subquadratic algorithm for computing intersections (as opposed to reporting each of them explicitly}, and we give the first optimal algorithm for computing the intersections of a line arrangement with a query segment. Using duality arguments we also present an improved algorithm for a point enclosure problem.