Skeleton.
Rudimentary tests pass.
Very simple validating.
Some more validation done on input.
Handles invalid material type.