public static function extractFromHTML($rawHTMLPage, $source = "") 
		{
			$parser = new HTMLParser();
			
			// Parse HTML into blocks
			$article = $parser->parse($rawHTMLPage);
			
			// Filter out clean article title
			Filters\TitleFilter::filter($article);
			
			// Discover article 'end' points using syntactic terminators
			Filters\EndBlockFilter::filter($article);
			
			// Filter content using word count and link density using algorithm from Machine learning
			Filters\NumberOfWordsFilter::filter($article);
			
			// Filter blocks that come after content
			Filters\PostcontentFilter::filter($article);
			
			// Merge close blocks
			Mergers\CloseBlockMerger::merge($article);
			
			// Remove blocks that are not content
			Filters\NonContentFilter::filter($article);
			
			// Mark largest block as 'content'
			Filters\LargestBlockFilter::filter($article);
			
			// Mark blocks found between the title and main content as content as well
			Filters\BetweenTitleAndContentFilter::filter($article);
			
			// Post-extraction cleanup removing now irrelevant blocks and sets full title
			Filters\PostextractionFilter::filter($article);
			
			// Scans article line by line removing non-content on a per-line basis
			Filters\LineFilter::filter($article);
			
			// Determine document language
			Filters\LanguageFilter::filter($article);
			
			// Filter keywords from the article document
			Filters\KeywordFilter::filter($article);
			
			$article->source = $source;
			
			return $article; 
		}