In cellular networks, due to practical deployment issues, some areas have good wireless coverage while others may not. This results in significant throughput (service quality) difference between wireless carriers at some locations. Through extensive measurements, we have validated the existence of such service quality difference. Then, through peer to peer interfaces such as WiFi direct, a mobile device (node) with low service quality can offload its data traffic to nodes with better service quality, to save energy and reduce delay. To achieve this goal, we propose a Quality-Aware Traffic Offloading (QATO) framework to offload network tasks to neighboring nodes with better service quality. QATO can identify neighbors with better service quality and provide incentive mechanisms to motivate nodes to help each other. To validate our design, we have implemented QATO on Android platform and have developed a web browser and a photo uploader on top of it. Experimental results show that QATO can significantly reduce energy and delay for both data downloading and uploading. Through trace-driven simulations, we also show that all users can benefit from data offloading in the long run.