Basic functionality, should work with a C++11-compliant compiler