minimized include dependencies as per code review
removed using namespace X; from headers

- also minimized more include dependencies
Making getters const functions
using make_shared<>() instead of shared_ptr<>()