def main():
    """Main function"""
    parser = argparse.ArgumentParser()
    parser.add_argument('-u', '--username',
                        required=True, help='Fido username')
    parser.add_argument('-n', '--number', default=None,
                        required=False, help='Fido phone number')
    parser.add_argument('-p', '--password',
                        required=True, help='Password')
    parser.add_argument('-l', '--list', action='store_true',
                        default=False, help='List phone numbers')
    parser.add_argument('-j', '--json', action='store_true',
                        default=False, help='Json output')
    parser.add_argument('-t', '--timeout',
                        default=REQUESTS_TIMEOUT, help='Request timeout')
    args = parser.parse_args()
    client = FidoClient(args.username, args.password, args.timeout)
    loop = asyncio.get_event_loop()
    fut = asyncio.wait([client.fetch_data()])
    loop.run_until_complete(fut)
    if args.list:
        if not client.get_phone_numbers():
            return
        if args.json:
            print(json.dumps(client.get_phone_numbers()))
        else:
            print("Phone numbers: "
                  "{}".format(", ".join(client.get_phone_numbers())))
    else:
        if not client.get_data():
            return
        if args.json:
            print(json.dumps(client.get_data()))
        else:
            _format_output(args.number, client.get_data())
    client.close_session()