private void HandleSessionCommunication(IHomeSession homeSession) { using (homeSession.getOnMessageRecievedObservable().Subscribe( onNext: msg => { var commandParser = new CommandParser(mDeviceRepository, mUserRepository, homeSession); var commandExecutor = new CommandExecutor(commandParser); var resp = commandExecutor.ExecuteCommand(homeSession, msg); homeSession.Write(resp); }, onError: (error) => { Console.WriteLine("error occured: " + error); })) { } }