We present approximation algorithms for the unsplittable flow problem (UFP) on undirected graphs. As is standard in this line of research, we assume that the maximum demand is at most the minimum capacity. We focus on the non-uniform capacity case in which the edge capacities can vary arbitrarily over the graph. Our results are: – For undirected graphs we obtain a O(Δα−1 log2n) approximation ratio, where n is the number of vertices, Δ the maximum degree, and α the expansion of the graph. Our ratio is capacity independent and improves upon the earlier O(Δα−1(cmax/cmin) log n) bound  for large values of cmax/cmin. Furthermore, if we specialize to the case where all edges have the same capacity, our algorithm gives an O(Δα−1 log n) approximation, which matches the performance of the best-known algorithm  for this special case. – For certain strong constant-degree expanders considered by Frieze  we obtain an O(√log n) approximation for the uniform capacity case, improving upon the current O(log n) approximation. – For UFP on the line and the ring, we give the first constant-factor approximation algorithms. Previous results addressed only the uniform capacity case. – All of the above results improve if the maximum demand is bounded away from the minimum capacity. Our results are based on randomized rounding followed by greedy alteration and are inspired by the use of this idea in recent work [21, 9].