	public static ArrayList<AwfulThread> parseForumThreads(TagNode aResponse) throws Exception {
		long startTime = System.currentTimeMillis();
        ArrayList<AwfulThread> result = new ArrayList<AwfulThread>();
        TagNode[] threads = aResponse.getElementsByAttValue("class", "thread", true, true);
		for(TagNode node : threads){
            AwfulThread thread = new AwfulThread();
            try {
                String threadId = node.getAttributeByName("id");
                thread.setThreadId(threadId.replaceAll("thread", ""));
            } catch (NullPointerException e) {
                e.printStackTrace();
                continue;
            }
            	TagNode[] tarThread = node.getElementsByAttValue("class", "thread_title", true, true);
            	TagNode[] tarUser = node.getElementsByAttValue("class", "author", true, true);
                Object[] nodeList;
                if (tarThread.length > 0) {
                    thread.setTitle(((TagNode) tarThread[0]).getText().toString().trim());
                }
                TagNode[] tarSticky = node.getElementsByAttValue("class", "title title_sticky", true, true);
                if (tarSticky.length > 0) {
                    thread.setSticky(true);
                } else {
                    thread.setSticky(false);
                }
                TagNode[] tarIcon = node.getElementsByAttValue("class", "icon", true, true);
                if (tarIcon.length > 0 && tarIcon[0].getChildTags().length >0) {
                    thread.setIcon(tarIcon[0].getChildTags()[0].getAttributeByName("src"));
                }
                if (tarUser.length > 0) {
                    thread.setAuthor(tarUser[0].getText().toString().trim());
                }
                TagNode[] tarCount = node.getElementsByAttValue("class", "count", true, true);
                if (tarCount.length > 0 && tarCount[0].getChildTags().length >0) {
                    thread.setUnreadCount(Integer.parseInt(
                    		tarCount[0].getChildTags()[0].getText().toString().trim()));
                } else {
                	TagNode[] tarXCount = node.getElementsByAttValue("class", "x", true, true);
					if (tarXCount.length > 0) {
						thread.setUnreadCount(0);
					} else {
						thread.setUnreadCount(-1);
					} 
                }
                result.add(thread);
        }
        Log.e("AwfulThread", "Process Time: "+(System.currentTimeMillis()-startTime));
        return result;
    }

	public static ArrayList<AwfulThread> parseForumThreads(TagNode aResponse) throws Exception {
		long startTime = System.currentTimeMillis();
        ArrayList<AwfulThread> result = new ArrayList<AwfulThread>();
        TagNode[] threads = aResponse.getElementsByAttValue("id", "forum", true, true);
        TagNode[] tbody = threads[0].getElementsByName("tbody", false);
		for(TagNode node : tbody[0].getChildTags()){
            AwfulThread thread = new AwfulThread();
            try {
                String threadId = node.getAttributeByName("id");
                thread.setThreadId(threadId.replaceAll("thread", ""));
            } catch (NullPointerException e) {
                e.printStackTrace();
                continue;
            }
            	TagNode[] tarThread = node.getElementsByAttValue("class", "thread_title", true, true);
            	TagNode[] tarUser = node.getElementsByAttValue("class", "author", true, true);
                Object[] nodeList;
                if (tarThread.length > 0) {
                    thread.setTitle(((TagNode) tarThread[0]).getText().toString().trim());
                }
                TagNode[] tarSticky = node.getElementsByAttValue("class", "title title_sticky", true, true);
                if (tarSticky.length > 0) {
                    thread.setSticky(true);
                } else {
                    thread.setSticky(false);
                }
                TagNode[] tarIcon = node.getElementsByAttValue("class", "icon", true, true);
                if (tarIcon.length > 0 && tarIcon[0].getChildTags().length >0) {
                    thread.setIcon(tarIcon[0].getChildTags()[0].getAttributeByName("src"));
                }
                if (tarUser.length > 0) {
                    thread.setAuthor(tarUser[0].getText().toString().trim());
                }
                TagNode[] tarCount = node.getElementsByAttValue("class", "count", true, true);
                if (tarCount.length > 0 && tarCount[0].getChildTags().length >0) {
                    thread.setUnreadCount(Integer.parseInt(
                    		tarCount[0].getChildTags()[0].getText().toString().trim()));
                } else {
                	TagNode[] tarXCount = node.getElementsByAttValue("class", "x", true, true);
					if (tarXCount.length > 0) {
						thread.setUnreadCount(0);
					} else {
						thread.setUnreadCount(-1);
					} 
                }
                result.add(thread);
        }
        Log.e("AwfulThread", "Process Time: "+(System.currentTimeMillis()-startTime));
        return result;
    }
