sh correctness fix

Addresses issue #1

Add test to make sure sh/sh! act correctly (and differently)

Fix sh! to send perform! message instead of perform