def initialize_arg_parser():
        """
        Initializes the option parser with the options -
            -q --image-query {[str]} -- [Image Search Query]
            -n --image-count {[int]} -- [Count of images that need to be downloaded]
            -f --destination-folder {[str]} -- [Download Destination Folder]
            -t --thread-count {[int]} -- [Count of Threads, to parallelize download of images]
        """

        GoogleImageExtractor.__argParser = ArgumentParser(
            description='Utility to search and download images from google')

        # Add the required arguments
        requiredArguments = GoogleImageExtractor.__argParser.add_argument_group(
            'required arguments')
        requiredArguments.add_argument('-q', '--image-query', dest='imageQuery',
                                       type=str, required=True, help='Image Search Query',
                                       metavar='<image_query>')

        # Add the optional arguments
        optionalArguments = GoogleImageExtractor.__argParser.add_argument_group(
            'optional arguments')
        optionalArguments.add_argument('-f', '--destination-folder', dest='destinationFolder',
                                       type=str, help='Download Destination Folder, default is the current folder',
                                       metavar='<destination_folder>', default="./")

        optionalArguments.add_argument('-n', '--image-count', dest='imageCount',
                                       type=int, help='Count of images that neeed to be extracted',
                                       metavar='<image_count>', default=100)

        optionalArguments.add_argument('-t', '--thread-count', dest='threadCount',
                                       type=int, help='Count of threads, to parallelize download of images',
                                       metavar='<thread_count>', default=4)