Remove the shared_ptr used everywhere and replace with unique_ptr for better ownership clarity

Signed-off-by: MHesham <mhesham.fcis@gmail.com>