http://stackoverflow.com/questions/2346163/pimpl-idiom-vs-bridge-design-pattern