destructor refactored
disposed flag added to fix crach on multiple dispose invokes
dispose pattern fixed to prevent crach on multiple dispose invokation