def get_top_headlines(self, q=None, sources=None, language='en', country=None, category=None, page_size=None,
                          page=None):
        """
            Returns live top and breaking headlines for a country, specific category in a country, single source, or multiple sources..

            Optional parameters:
                (str) q - return headlines w/ specific keyword or phrase. For example:
                          'bitcoin', 'trump', 'tesla', 'ethereum', etc.

                (str) sources - return headlines of news sources! some Valid values are:
                                'bbc-news', 'the-verge', 'abc-news', 'crypto coins news',
                                'ary news','associated press','wired','aftenposten','australian financial review','axios',
				'bbc news','bild','blasting news','bloomberg','business insider','engadget','google news',
				'hacker news','info money,'recode','techcrunch','techradar','the next web','the verge' etc.

		(str) language - The 2-letter ISO-639-1 code of the language you want to get headlines for. Valid values are:
				 'ar','de','en','es','fr','he','it','nl','no','pt','ru','se','ud','zh'

                (str) country - The 2-letter ISO 3166-1 code of the country you want to get headlines! Valid values are:
                                'ae','ar','at','au','be','bg','br','ca','ch','cn','co','cu','cz','de','eg','fr','gb','gr',
                                'hk','hu','id','ie','il','in','it','jp','kr','lt','lv','ma','mx','my','ng','nl','no','nz',
                                'ph','pl','pt','ro','rs','ru','sa','se','sg','si','sk','th','tr','tw','ua','us'

		(str) category - The category you want to get headlines for! Valid values are:
				 'business','entertainment','general','health','science','sports','technology'

		(int) page_size - The number of results to return per page (request). 20 is the default, 100 is the maximum.

		(int) page - Use this to page through the results if the total results found is greater than the page size.
        """

        # Define Payload
        payload = {}

        # Keyword/Phrase
        if q is not None:
            if type(q) == str:
                payload['q'] = q
            else:
                raise TypeError('keyword/phrase q param should be a of type str')

        # Sources
        if (sources is not None) and ((country is not None) or (category is not None)):
            raise ValueError('cannot mix country/category param with sources param.')

        # Sources
        if sources is not None:
            if type(sources) == str:
                payload['sources'] = sources
            else:
                raise TypeError('sources param should be of type str')

        # Language
        if language is not None:
            if type(language) == str:
                if language in const.languages:
                    payload['language'] = language
                else:
                    raise ValueError('invalid language')
            else:
                raise TypeError('language param should be of type str')

        # Country
        if country is not None:
            if type(country) == str:
                if country in const.countries:
                    payload['country'] = country
                else:
                    raise ValueError('invalid country')
            else:
                raise TypeError('country param should be of type str')

        # Category
        if category is not None:
            if type(category) == str:
                if category in const.categories:
                    payload['category'] = category
                else:
                    raise ValueError('invalid category')
            else:
                raise TypeError('category param should be of type str')

        # Page Size
        if page_size is not None:
            if type(page_size) == int:
                if 0 <= page_size <= 100:
                    payload['pageSize'] = page_size
                else:
                    raise ValueError('page_size param should be an int between 1 and 100')
            else:
                raise TypeError('page_size param should be an int')

        # Page
        if page is not None:
            if type(page) == int:
                if page > 0:
                    payload['page'] = page
                else:
                    raise ValueError('page param should be an int greater than 0')
            else:
                raise TypeError('page param should be an int')

        # Send Request
        r = requests.get(const.TOP_HEADLINES_URL, auth=self.auth, timeout=30, params=payload)

        # Check Status of Request
        if r.status_code != requests.codes.ok:
            raise NewsAPIException(r.json())

        return r.json()
Returns live top and breaking headlines for a country, specific category in a country, single source, or multiple sources..

            Optional parameters:
                (str) q - return headlines w/ specific keyword or phrase. For example:
                          'bitcoin', 'trump', 'tesla', 'ethereum', etc.

                (str) sources - return headlines of news sources! some Valid values are:
                                'bbc-news', 'the-verge', 'abc-news', 'crypto coins news',
                                'ary news','associated press','wired','aftenposten','australian financial review','axios',
				'bbc news','bild','blasting news','bloomberg','business insider','engadget','google news',
				'hacker news','info money,'recode','techcrunch','techradar','the next web','the verge' etc.

		(str) language - The 2-letter ISO-639-1 code of the language you want to get headlines for. Valid values are:
				 'ar','de','en','es','fr','he','it','nl','no','pt','ru','se','ud','zh'

                (str) country - The 2-letter ISO 3166-1 code of the country you want to get headlines! Valid values are:
                                'ae','ar','at','au','be','bg','br','ca','ch','cn','co','cu','cz','de','eg','fr','gb','gr',
                                'hk','hu','id','ie','il','in','it','jp','kr','lt','lv','ma','mx','my','ng','nl','no','nz',
                                'ph','pl','pt','ro','rs','ru','sa','se','sg','si','sk','th','tr','tw','ua','us'

		(str) category - The category you want to get headlines for! Valid values are:
				 'business','entertainment','general','health','science','sports','technology'

		(int) page_size - The number of results to return per page (request). 20 is the default, 100 is the maximum.

		(int) page - Use this to page through the results if the total results found is greater than the page size.