private void ProcessOpponentHostShipAction(string shipId, string shipyardId, CardCodename cardCodename)
    {
        // ship will be an unknown card at this point so needs to be instantiated
        Ship     ship     = (Ship)CardFactory.CreateCard(cardCodename, shipId);
        Shipyard shipyard = _game.Opponent.Shipyards.Find(x => x.CardId == shipyardId);

        shipyard.HostCard(ship);
        ship.StartConstruction();
        if (ship.OnPlay != null)
        {
            ship.OnPlay(_game, _game.Opponent);
        }
        _game.Opponent.ChangeClicks(-1);
        _game.Opponent.ChangeCredits(-ship.BaseCost);
        _game.Opponent.Hand.RemoveAt(0);

        GameViewController.HostShip(ship, shipyard, false);

        GameViewController.AddGameLogMessage(string.Format("<b>{0}</b> hosts {1} on {2}", _game.Opponent.Name, ship.CardName, shipyard.CardName));
    }