Some changes, now requires C++11