Simplifying complexity: a review of complexity theory