added rubyish unless blocks