update switching namespace

- add comment in readme
- add config header file
- move some implementation from header into source file
- remove unused header includes
- use more override
- use auto_ptr (deprecated) instead of unique/scoped ptr switch