Split guard logic into Barbwire class, and cleaned up the interface