In this paper, we propose a formalization of non-monotonic reasoning using a three-valued logic based on the strong definitions of Kleene. We start by extending Kleene's three-valued logic with an "external negation" connective where ~ alpha is true when alpha is false or unknown. In addition, a default operator D is added where D alpha is interpreted as "alpha is true by default". The addition of the default operator increases the expressivity of the language, where statements such as "alpha is not a default" are directly representable. The logic has an intuitive model theoretic semantics without any appeal to the use of a fixpoint semantics for the default operator. The semantics is based on the notion of preferential entailment, where a set of sentences Gamma preferentially entails a sentence alpha, if and only if a preferred set of the models of Gamma are models of alpha. We also show that the logic belongs to the class of cumulative non-monotonic formalisms which are a subject of current interest.