NotSoSimpleConstruction

An Addon for Kerbal Space Program.

View project on GitHub

Not So SimpleConstruction! (NSSC)

Home

  1. Not So SimpleConstruction! (NSSC)
    1. 1.0.0 Getting Started with Not So SimpleConstuction! (NSSC)
    2. 1.0.1 Legal Mumbo Jumbo
    3. 1.0.2 Localization
      1. Not So SimpleConstruction! (NSSC)
        1. Extraplanetary Launchpads
      2. 1.1.1 Using Not So SimpleConstuction! (NSSC)
    4. 1.1 Installation
      1. 1.1.1. Minimal Installation
        1. 1.1.1.1 Dependencies
        2. 1.1.1.2 Survey Build Support
      2. 1.1.2 Recommended Mods
      3. 1.1.3 Suggests addons that benefit SimpleConstruction! (SC)
      4. 1.1.4 Supported addons
    5. 1.2 Setup
    6. 2.0.0 Construction Basics
      1. 2.1.0 Resources
        1. 2.1.0.1 Resource Flow
      2. 2.1.1 Prospecting and Mining: dirt? to MetalOre
      3. 2.1.2 Smelting: MetalOre to Metal
        1. 2.1.3 Working: Metal to RocketParts
        2. 2.1.4 Remelting: ScrapMetal to Metal
        3. 2.1.5 Building: RocketParts to Rockets
        4. 2.1.6 Recycling: RocketParts to ScrapMetal
          1. Table 1: Comparison of stock KSP LFO engines.
      4. 2.2.0 Productivity
      5. 2.3.0 Construction Skill
      6. 2.3.1 Unskilled kerbals
      7. 2.3.2 Non-career modes
    7. 2.4.0 Workshops
      1. 2.4.1 Fully equipped
      2. 2.4.2 Other parts
      3. 2.5.2. Survey Stations and Survey Stakes
      4. 2.5.3 Micro-Pad
    8. 3.0.0 Survey System
      1. 3.1.0 Survey Station
      2. 3.1.1. Survey Skill
      3. 3.2.0 Survey Site

1.0.0 Getting Started with Not So SimpleConstuction! (NSSC)

This manual is based upon taniwha’s Extraplanetary Launchpads original manual.

The FULL Extraplanetary Launchpads PDF can be found [here]](http://taniwha.org/~bill/EL_Manual.pdf) and was not written specifically for SimpleConstruction! (SC)

Again, thank you to taniwha for all his efforts! :star::star::star::star::star::star:

1.0.2 Localization

Not So SimpleConstruction! (NSSC)

  • English English
  • Mexicano Español Spanish Mexican (Mexicano Español)
  • Русский Russian (Русский)
  • your translation here

HELP WANTED - See the [README in the Localization folder][MOD:local] for instructions for adding or improving translations. GitHub push is the best way to contribute. Additions and corrections welcome!

Extraplanetary Launchpads

  • English Flag English
  • Chinese Flag Chinese (简体中文)
  • your translation here

Kindly help translate taniwha’s Extraplanetary Launchpads. See above for instructions.

1.1.1 Using Not So SimpleConstuction! (NSSC)

Make sure Module Manager and SimpleConstruction! (SC) are installed correctly and are the latest versions

1.1 Installation

1.1.1. Minimal Installation

Download the zip file for the latest version via the EL forum thread1 and extract its contents to KSP’s GameData directory2

  • Ensure that the latest version of Module Manager3 is installed correctly.

Note that the minimal installation will not support survey builds.

1.1.1.1 Dependencies

1.1.1.2 Survey Build Support

  • In order to support survey builds
    • KSP 1.7.1
      • After (post)
        • can use the stock systems to carry and drive survey stakes
        • Breaking Ground (Serenity) DLC is not required, but suggested
      • Before (pre)

There are several mods that improve EL:

1.1.3 Suggests addons that benefit SimpleConstruction! (SC)

1.1.4 Supported addons

1.2 Setup

The first time the space center scene is entered, an options window will be presented allowing for the selection of various settings:

  • Use of Blizzy’s toolbar when available.
  • Creation of KAC alarms and the default action for those alarms.
  • Visibility of the build resources window in the editors.
  • Whether “craft hulls” are presented during build.
  • Debug output for craft hulls. Generally not needed unless things go wrong in generating a hull, then the data will be requested.

2.0.0 Construction Basics

2.1.0 Resources

Currently, EL uses four resources for its production chain (though the recipe system (see section 5.2 on page 31) allows for much more complicated systems).

  • MetalOre
    • Assumed to be hematite11 (but not explicitly stated as such) and thus has a density of 5.2t/m3
  • Metal
    • Assumed to be iron (but not explicitly stated as such) and thus has a density of 7.8t/m3
  • RocketParts
    • Assumed to be sub-parts ready for assembly into actual parts, and thus has a very low density of 0.5t/m3
  • ScrapMetal
    • The true product of any machine shop: all machine shops produce scrap metal in various forms and efficiencies. The lumps of metal handed over to the customer are really the left-overs from producing scrap metal. Scrap metal generally does not pack well, though better than parts, so a density of 0.8t/m3 was chosen as an average.

2.1.0.1 Resource Flow

Resource Flow

2.1.1 Prospecting and Mining: dirt? to MetalOre

It may be worthwhile thinking of the stock system providing a means to extract MetalOre from a larger mix of “dirt”, while the Kethane system provides access to rich veins of MetalOre.

In order to obtain MetalOre when away from the KSC, one of the augers is used to mine MetalOre from the surface of the planet or moon. EL uses the stock resource distribution system configured to distribute MetalOre, so prospecting is done as for stock’s Ore resource, but with a focus on MetalOre instead.

Kethane and Karbonite Prior to KSP 1.0, EL relied solely on Kethane[^19] for its prospecting and mining, and there was an adaptation to make EL use Karbonite12 instead.

As of KSP 1.0 (EL 5.1.90) Kethane is completely optional, but if present, will be used on top of the stock resource system. Scanning is quite separate, but mining is done using the exact same augers. Mining outside a MetalOre deposit created by Kethane will extract MetalOre at the rate dictated by the concentration given by the stock system (1% to 15%), but deposits created by Kethane effectively provide hot-spots of 100% concentration. The Karbonite adaptation seems to have been mothballed, but it was mostly a parts mod with configs for EL, so it may still be usable.

2.1.2 Smelting: MetalOre to Metal

MetalOre is converted to Metal via smelting. Smelting is the process of reducing9 metal oxides. EL assumes MetalOre is Fe2O3 (the most common iron ore on Earth). Reducing Fe2O3 is a three-step process (from Wikipedia):

  • Stage One: 3Fe2O3 + CO → 2Fe3O4 + CO2
  • Stage Two: Fe3O4+ CO → 3FeO + CO2
  • Stage Three: FeO + CO → Fe + CO2

However, this really happens all at once in a smelter so the effective process is: 3Fe2O3 + 9CO → 6Fe + 9CO2.

Fe has a molar mass of 55.845g/mol, O has a molar mass of 15.9994g/mol, so 479.0646g of Fe2O3 will produce 335.070g of Fe. This leads to a MetalOre to Metal mass conversion rate of 0.6994255913

In order to model the CO consumption, EL assumes that LiquidFuel is RP-1 (C12H16) and that Oxidizer is liquid oxygen (O2). The stoichiometric equation for burning RP-1 is: C12H16 + 16O2 → 12CO2 + 8H2O

However, rockets tend to burn rich (reduced oxidizer quantity) in order to avoid oxidizing the engine, keep the engine cooler, and increase the number of lighter molecules in the exhaust. KSP’s standard LiquidFuel and Oxidizer mix of 9:11 by volume very closely approximates the following when LiquidFuel is assumed to be RP-1 and Oxidizer is assumed to be liquid oxygen10 (used for 0% efficient smelting): 2C12H16 + 17O2 → 2C + 17CO + 4CO2 + CH2O + 7H2 + 8H2O

The resulting equation for 100% efficient11 smelting thus becomes: 10Fe2O3 + 2C12H16 + 17O2→ 20Fe + 24CO2 + 16H2O

C12H16 has a molar mass of 160.25544g/mol, CO2 has a molar mass of 44.0095g/mol, H2O has a molar mass of 18.01528g/mol, C 12.0107g/mol, CO 28.0101g/mol, CH2O 30.02598g/mol, H2 2.01588g/mol. Thus the two equations become the following when viewed as masses: 320.51088 + 543.9796 → 24.0214 + 476.1717 + 176.038 + 30.02598 + 14.11116 + 144.12224 1596.882 + 320.51088 + 543.9796 → 1116.9 + 1056.228 + 288.24448.

The mass conversion rate of MetalOre to Metal is still 0.6994255.

Smelting is assumed to consume 8.62MJ/kg of produced Metal14. The combustion of LiquidFuel and Oxidizer is assumed to produce 6MJ/kg. The justification for this comes from analyzing the properties of KSP’s stock LFO engines and noting that the Poodle (the most efficient) gets 5.9MJ/kg of LiquidFuel and Oxidizer (see table 1 on the next page).

Thus, EL’s smelters nominally12 consume 864.49048g/s of LiquidFuel and Oxidizer to produce 5186.94288kJ/s of heating along with the products necessary for smelting.

At 100% efficiency, they consume 1596.882g/s of MetalOre and 9627.678kJ/s of heat while producing 1116.9g/s of Metal. Thus 100% efficiency is unobtainable as there is insufficient heat supplied by the LFO mix. In theory, the attainable efficiency is a bit less than 53.9%, but due to transferred resources cooling the smelter13, the maximum

2.1.3 Working: Metal to RocketParts

Metal is converted to RocketParts by working it. Currently, this is done using either the workshop (big blue part in Utilities), or the workbench (tower with little platforms in Pods). Unfortunately, the process is quite bogus: Metal is used for for everything, and the conversion speed is probably too fast. However, the efficiency (0.7 by mass) is reasonable: it is the estimated average of various means of production: cutting cast iron parts leads to high efficiency, but cutting lumps of steel can lead to fairly low efficiency depending on just how much metal needs to be cut away. At the same time, ScrapMetal is produced at a rate of 0.295 by mass (some scraps are lost).

2.1.4 Remelting: ScrapMetal to Metal

ScrapMetal can optionally be remelted to Metal using a smelter. The process is lossless (conversion rate of 1), the loss (very small) occurs when producing the ScrapMetal. Storing and reclaiming ScrapMetal is fully optional: running out of storage will not stop Metal to RocketParts conversion.

2.1.5 Building: RocketParts to Rockets

Building is done by the launchpads, orbital dock, or survey station (or just “pads” for short). The rate is governed by the overall vessel productivity (measured in kerbalhours (Khr)) shared amongst active pads. Each ton of rocket (dry-mass) requires five kerbal-hours (i.e. 5Kh/t).

There have been discussions that EL’s build rate is too high compared to Kerbal Construction Time, but those arguing that side were unaware that RocketParts represent components to be assembled into the parts visible in KSP. The building process is really just the kerbals putting those components together. It is the smelting and working stages that are unrealistically fast.

2.1.6 Recycling: RocketParts to ScrapMetal

Recycling is done on a part-by-part basis. When a part is recycled, it is first drained of any resources it contains (e.g., LiquidFuel or Oxidizer), and those resources will evaporate, be broken down into other resources to be reclaimed, or transferred and thus reclaimed depending on the resource (most will be transferred). Once the part has been drained, it will be broken down from RocketParts to ScrapMetal and the ScrapMetal reclaimed. Of course, any reclaimed resource needs storage space. Otherwise, it will be lost.

Table 1: Comparison of stock KSP LFO engines.
Engine Thrust (N) Isp(s) Ve (m/s) flow (kg/s) power (W) Esp (J/kg)
24-77 16k 290 2843.9 5.6 22.8M 4.0M
48-7S 20k 320 3138.1 6.4 31.4M 4.9M
aerospike 180k 340 3334.2 54.0 300.1M 5.6M
LV-1 2k 315 3089.1 0.6 3.1M 4.8M
LV-1R 2k 290 2843.9 0.7 2.8M 4.0M
LV-909 60k 345 3383.3 17.7 101.5M 5.7M
LV-T30 240k 310 3040.0 78.9 364.8M 4.6M
LV-T45 215k 320 3138.1 68.5 337.3M 4.9M
mainsail 1500k 310 3040.0 493.4 2.3G 4.6M
Mk55 120k 305 2991.0 40.1 179.5M 4.5M
poodle 250k 350 3432.3 72.8 429.0M 5.9M
SSME 1000k 315 3089.1 323.7 1.5G 4.8M
skipper 650k 320 3138.1 207.1 1.0G 4.9M
twin-boar 2000k 300 2942.0 679.8 2.9G 4.3M
rhino 2000k 340 3334.2 599.8 3.3G 5.6M
mammoth 4000k 315 3089.1 1294.9 6.2G 4.8M
rapier 180k 305 2991.0 60.2 269.2M 4.8M
vernor 12k 260 2549.7 4.7 15.3M 3.3M

Thrust and Isp are from the config files. Ve (exhaust velocity) is Isp ∗ g0 (9.8066). Flow is thrust/Ve . Power is 0.5 x thrust x Ve. Esp (energy per kg) is power/flow or 1.5(V2e x efficiency appears to be about 40%.

2.2.0 Productivity

All kerbals have a base productivity score determined by their stupidity, courage, and bad-ass characteristics. The more stupid a kerbal is, the less that kerbal will contribute to the workshop’s (and thus the overall vessel’s) productivity, and more courageous kerbals will, in general, contribute less than less courageous kerbals, though bad-ass kerbals complicate the relationship. It is entirely possible for a kerbal to have negative productivity.

If the KerbalStats15 mod is installed, then the amount of time a kerbal has spent in certain workshops (currently only EL’s blue workshop (afaik)) improves the kerbal’s productivity.

A workshop’s productivity is the sum of the productivities of all kerbals working in that shop. A vessel’s productivity is the sum of the productivities of all workshops in that vessel. If the vessel’s productivity is greater than zero, then construction will progress. Negative productivity does not cause production to become destruction, instead it causes a productivity deficit that must be overcome by better construction kerbals before construction will proceed.

2.3.0 Construction Skill

Kerbals with the construction skill (by default, engineers, but hereon referred to as construction kerbals) are the cornerstone of workshop productivity. However, their space-faring (stock) experience affects their productivity greatly.

experience (stars) Ability
The kerbal can work in a fully equipped workshop.
:star: The kerbal can work in any workshop.
:star::star: The kerbal is always productive in a fully equipped workshop (base productivity still matters, but to get negative productivity, the kerbal would have to have infinitely negative base productivity).
:star::star::star: The kerbal is always productive in any workshop.
:star::star::star::star: The kerbal enables skilled workers in any workshop (a 4-star construction kerbal in an under-equipped workshop allows 0-star construction kerbals to contribute).
:star::star::star::star::star: The kerbal enables unskilled workers in a fully equipped workshop (a 5-star construction kerbal in a fully equipped workshop allows any kerbal, even those without the construction skill, to contribute).

2.3.1 Unskilled kerbals

Unskilled kerbals cannot work unless a 5-star construction kerbal is present in the same workshop, and the workshop must be fully equipped, but if the kerbal’s experience level is 2 or less, and the kerbal’s base productivity is negative, the kerbal will detract from the workshop’s productivity.

For roleplay purposes, “fully equipped” can be thought of as the workshop having all the necessary tools, and the productivity factor as being the quality of the tools or the level of automation available.

2.3.2 Non-career modes

In sandbox (and science?) mode, all kerbals are level 5, so there will be no negative contributions, and if there is at least one construction kerbal in the workshop, then all kerbals of sufficient ability will contribute.

2.4.0 Workshops

Workshops, too, affect productivity. All workshops have a productivity factor that is multiplied by the sum of the productivities of the kerbals working in that shop. The resulting productivity is then passed to the vessel.

2.4.1 Fully equipped

Fully equipped workshops are those with a productivity factor of 1.0 or more, or specially marked workshops with lower productivity factors. EL’s blue workshop, and the rocket workbench are both fully equipped workshops.

2.4.2 Other parts

All stock crewed parts act as under-equipped workshops. In addition, all crewed command pods, including those from other mods, act as under-equipped workshops. Many base-building mods (eg, KPBS9, Pathfinder10) provide workshops (refer to those mods for details).

2.5.2. Survey Stations and Survey Stakes

Survey stations use local survey sites to specify the location and orientation of the built vessel. Survey sites are sets of one or more survey stakes with the same name and within range (200m) of each other

A stake’s name defaults to the name of the kerbal who planted it with “Base” appended. Thus if Valentina plants a stake, it will be named Valentina Kerman Base. Thus, when creating a site consisting of more than one stake, it is easiest to have only one kerbal do the stake planting. Also, if multiple local sites are desired, getting a different kerbal to plant the stakes for each site will make it easier.

2.5.3 Micro-Pad

The micro-pad is a single-use construction point. When the build is finalized, the pad self-destructs and the build is attached to the parent vessel as if the build had been placed there in the editor (VAB or SPH). Also, the micro-pad can be carried on a kerbal’s back using KIS 2.

The orientation and position of the build is controlled by the combination of the orientation and position of the micro-pad, and the automatically selected attach node of the root part. The colored diamonds on the micro-pad indicate the orientation of the root part when its bottom node is selected (red = +X, blue = +Z, cyan = -X, yellow = -Z1. It is important to remember that when the micro-pad is facing up, the root part’s selected node will be facing down, having been rotated around the part’s Z axis.

The micro-pad automatically selects the attach node of the root part by searching for the first available (unattached) node. First the bottom node is checked, then the top node, then any remaining nodes in the order they are found. Thus a small amount of control over which node is selected can be obtained simply by attaching parts to the undesired nodes

3.0.0 Survey System

When landed, orbital docks can be awkward for building as they tend to be on top of the building vessel (especially awkward for building rovers as getting the rover to the ground can be an issue), and launchpads are highly sensitive to ground conditions, and and have their own issues when building large vessels. Also, they provide no flexibility in placement or orientation of the build.

EL’s survey system greatly eases the seeding (or even complete build-out) of bases, and works equally well for building ships and other vessels. However, it does have one disadvantage: any optional resources (liquid fuel, oxidizer, electric charge, etc) will not be transferred: the build will be empty of such resources (freedom is not free), but as KIS2 is required to place the stakes, and KAS16 is almost always installed with it, this disadvantage should be only minor17.

The survey system consists of two parts18 : the survey station, and the survey site. The survey station (a re-purposed hitchhiker can) is used to keep track of the survey sites and do the actual building (it serves the same purpose as the orbital dock or a launchpad, but must be landed), and must be flown down to the surface in the vicinity of where the builds will occur. The survey site is ephemeral: it is marked out by one or more survey stakes and is used to specify the location and orientation of the build.

3.1.0 Survey Station

3.1.1. Survey Skill

Kerbals with the survey skill (by default, pilots, but hereon referred to as survey kerbals) affect the range of a survey station according to their stock experience level. The experience level of the most skilled survey kerbal in the survey station is used. However, even an unskilled kerbal can man a survey station, and an unmanned survey station is still operational.

Skill level range
unmanned 20 meters
unskilled 50 meters
0 stars 100 meters
1 star 200 meters
2 stars 400 meters
3 stars 800 meters
4 stars 1600 meters
5 stars 2000 meters

Note that the range is from the survey vessel’s center of mass to the nearest stake of the survey site, but stakes may be separated by up to 200 meters15.

3.2.0 Survey Site

Stakes have two modes with seven settings in each mode (default is Direction:Origin):

  • Direction these are used to control the orientation of the build.
    • Origin used to mark the location above which the build’s root part will be placed, and also forms the reference point for other direction stakes that aren’t in pairs.
    • -X and +X
      • used to specify the lateral (port (-X) and starboard (+X)) axis of the build (both VAB and SPH). If both -X and +X are used, then the origin is ignored, otherwise the axis runs from -X to origin or origin to +X.
    • -Y and +Y
      • used to specify the “vertical” (nadir (-Y) and zenith (+Y)) axis of the build (relative to the floor in the VAB or SPH). If both -Y and +Y are used, then the origin is is ignored, otherwise the axis runs from -Y to origin or origin to +Y. NOTE: not recommended, very advanced usage.
    • -Z and +Z
      • used to specify the ventral(+Z)/dorsal(-Z) (VAB) or fore(+Z)/aft(-Z) (SPH) axis of the build. If both -Z and +Z are used, then the origin is ignored, otherwise the axis runs from -Z to origin or origin to +Z.
    • If none of the axis direction stakes are used, then the default orientation is such that the build’s +Y axis is the local up, +X axis points east, and +Z points north (same as on the KSC launchpad).
    • If the axes marked out by the stakes are not perfectly orthogonal, then the build will be oriented such that the errors are balanced.
  • Bounds
    • these are used to control the placement of the build based on its bounding box rather than its root part.
    • Origin
      • used to mark the location of the root part along any axis that has not been bound.
    • -Z and +Z
      • used to mark the ventral(+Z)/dorsal(-Z) (VAB) or fore(+Z)/aft(-Z) (SPH) edges of the build. If only one of -Z or +Z is used, then that edge of the build will be exactly on that stake, otherwise the the Z-axis center of the build’s bounding box will be centered on the midpoint between the two stakes.
    • -X and +X
      • used to mark the lateral (port (-X) and starboard (+X)) edges of the build. If only one of -X or +X is used, then that edge of the build will be exactly on that stake, otherwise the the X-axis center of the build’s bounding box will be centered on the midpoint between the two stakes.
  • Bounds stakes and direction stakes work together: any unbound axis of the build slides along that axis of the reference frame created by the direction stakes (or the default frame if no direction stakes are used).
  • There is actually only one origin stake: there is no difference between a bounds origin stake and a direction origin stake. The appearance of there being two origin stakes is due to the overly simple controls.
  • If multiple stakes of the same type+setting have been placed, then they will be averaged together to form a virtual stake of the same type+setting. This can be very useful with multiple origin stakes to avoid the build clipping into the stake when the lowest part of the build is directly below the root part.
  • If no origin stakes have been placed, then the average of all other stakes is used as the origin point.
  • The actual location of the stakes is about 19cm above the ground.
  • If no Y bounds stake has been placed, then the origin acts as an implicit -Y bounds stake (otherwise almost all builds would spawn in the ground).

The VAB orientation really is weird.

  • -Y and +Y used to specify the “vertical” (nadir (-Y) and zenith (+Y)) axis of the build (relative to the floor in the VAB or SPH). If both -Y and +Y are used, then the origin is is ignored, otherwise the axis runs from -Y to origin or origin to +Y. NOTE: not recommended, very advanced usage.
  • -Z and +Z used to specify the ventral(+Z)/dorsal(-Z) (VAB) or fore(+Z)/aft(-Z) (SPH) axis of the build. If both -Z and +Z are used, then the origin is ignored, otherwise the axis runs from -Z to origin or origin to +Z.
  • If none of the axis direction stakes are used, then the default orientation is such that the build’s +Y axis is the local up, +X axis points east, and +Z points north (same as on the KSC launchpad).
  • If the axes marked out by the stakes are not perfectly orthogonal, then the build will be oriented such that the errors are balanced.
  1. Hopefully the colors are distinct enough that any suffering from colorblindness can distinguish at least one diamond. The pad’s default orientation in the VAB is such that red (+X) points to the VAB door, blue (+Z) points to the north wall, cyan (-X) to the west and yellow (-Z) to the south.  2

  2. Okay, folder. Now get off my lawn ;)  2 3 4

  3. And an engineering mistake in the smelter design. Some kerbals will miss out on snacks 

  4. this isn’t a mod. ;P 

  5. Be Kind: Lithobrake, not jakebrake! Keep your Module Manager up to date! 

  6. Part Action Window (right-click menu) 

  7. Areas where resource extraction is done at 100% of extractor capacity. Other areas (those covered by the stock resource system) get 1% to 15% extraction rate. 

  8. The actual rates vary with the smelter: 800g/s, 3149.8g/s and 5000g/s of LFO, with the other rates scaled accordingly. 

  9. Chemistry term, the opposite of oxidizing (or reduction vs oxidization).  2 3

  10. may work on other versions (YMMV)  2

  11. common form of iron ore. 

  12. Arbitrary assumption. 

  13. 0.46628367 volume (resource unit) conversion rate. 

  14. Note that the exact ratios of the products were arbitrarily chosen but are chemically “correct” (balanced), and that the inclusion of formaldehyde is the result of “Hmm, wonder if there’s a CH2O. Oh, there is, and it does appear in partial combustion of hydrocarbons. Neat.” 

  15. This is a bit of a misfeature: the range should be from the survey station part and the maximum separation of the stakes should be dependent on the skill as well.  2

  16. Though currently a little awkwardly 

  17. It can, however, lead to good entertainment: 19 

  18. If you’re thinking KSP parts, then it’s three: survey station, survey stake, and mallet. 

  19. Kerbal Space Center? Kerbin Space Center? Kerman Space Center? Kraken Snack Constructor?