An abstract framework for structured arguments is presented that instantiates Dung's (1995) abstract argumentation frameworks. Arguments are defined as inference trees formed by applying two kinds of inference rules: strict and defeasible rules. This naturally leads to three ways of attacking an argument: attacking a premise, attacking a conclusion and attacking an inference. To resolve such attacks, preferences may be used, which leads to three corresponding kinds of defeat: undermining, rebutting and undercutting defeat. The nature of the inference rules, the structure of the logical language on which they operate and the origin of the preferences are, apart from some basic assumptions, left unspecified.The resulting framework integrates work of Pollock, Vreeswijk and others on the structure of arguments and the nature of defeat, and extends it in several respects. Various rationality postulates are proven to be satisfied by the framework, and several existing approaches are proven to be a special case of the framework, including assumption-based argumentation and DefLog.