guard can accept an array of guards

The implementation isn't too fancy, but I didn't want to change the existing code more than necessary.