public PlayerModel(Settings playerSettings, ShipModel.Factory shipFactory) { //order of initilaization is based on object graph, if object A is injected into B A is initalized first ! ModelSettings = playerSettings; RxPlayerName = new ReactiveProperty<string>(playerSettings.playerName); RxPlayerScore = new ReactiveProperty<int>(playerSettings.initialScore); RxPlayerState = new ReactiveProperty<PlayerState>(PlayerState.Inactive); PlayerShip = shipFactory.Create(this, playerSettings.shipSettings); PlayerShip.RxShipState.Where(x => x == ShipModel.ShipState.Dead).Subscribe(x => { Deactivate(); }); }