Fiddle with a few of the semantics
Write some tests to verify, currently broken because of Splat for some reason