C
Scoping added, tests tested, with* fields removed for redundancy