Getting close; needs refining.