True disposable pattern implemented
True disposable pattern & further breaking down of functions