More redesign. Using some c++11 to our benefit.