private static double calculateCommandModule(AvailablePart part)
        {
            ConfigNode commandModule = PartConfigLoader.GetCommandModule(part);

            Log.log("Command Module: " + commandModule);
            if (commandModule == null)
            {
                return(0);
            }
            Double minCrew = PartConfigLoader.GetProperty(commandModule, PartConfigLoader.MINUMUN_CREW);

            Log.log("Minimun Crew: " + minCrew);
            bool hasHibernation = PartConfigLoader.GetBooleanProperty(commandModule, PartConfigLoader.HAS_HIBERNATION);

            Log.log("Has Hibernation: " + hasHibernation);
            bool hasHibernationMultiplier = PartConfigLoader.HasProperty(commandModule, PartConfigLoader.HIBERNATION_MULTIPLIER);

            Log.log("Has Hibernation Multiplier: " + hasHibernationMultiplier);
            ConfigNode chargeResource = PartConfigLoader.GetResource(commandModule, PartConfigLoader.ELECTRIC_CHARGE);
            Double     chargeRate     = chargeResource != null?PartConfigLoader.GetProperty(chargeResource, PartConfigLoader.RATE) : 1;

            double sum = 0;

            if (minCrew < 1)
            {
                sum += MIN_CREW_COMMAND_BASE;
            }

            if (!hasHibernation)
            {
                return(sum);
            }

            sum += CHARGE_RATE_COMMAND_BASE - CHARGE_RATE_COMMAND_FACTOR * chargeRate;

            double hibernationMultiplier = hasHibernationMultiplier ? PartConfigLoader.GetProperty(commandModule, PartConfigLoader.HIBERNATION_MULTIPLIER) : 0.5;

            sum += HIBERNATION_COMMAND_BASE - HIBERNATION_COMMAND_FACTOR * hibernationMultiplier;

            Log.log("Command: " + sum);
            return(sum);
        }