first pass at procedure semantics