Revert "Revert 2cccd59..89521bf"

This reverts commit 97c151dbf26abf077ac760548c4731fce6a5047a.
Starting over, 14 hrs of coding lost.