Maybe if we put it all in one method... Player.do(action, object) { if (isDark() && action is Examine/Read) { print "Too dark."; return; } if (Orc.nearby && action is Take) { { print "It stops you."; return; } switch (action) { case Look: ... case Take: ... } } ...let's not.