OpenTrafficMap: Why Community-Driven Real-time Geographic Data is the Next Big Thing in 2026

Proprietary traffic data isn’t just expensive; it’s an opaque black box dictating critical urban decisions, leaving city planners and developers blind to its inner workings and ripe for vendor lock-in. This era of closed data, controlled by a handful of corporations, is rapidly drawing to a close. The future of urban mobility and smart city infrastructure hinges on OpenTrafficMap: a transparent, community-driven approach to real-time geographic data that is poised to fundamentally redefine how we understand and interact with our cities by 2026.

The Black Box Dilemma: Why Current Traffic Data Falls Short

The status quo for acquiring real-time traffic intelligence is fundamentally broken. Organizations, from nascent startups to established municipal departments, face an entrenched system built on opacity and restriction. This isn’t just an inconvenience; it’s a systemic inhibitor of progress and a fiscal drain on public resources.

High Cost & Licensing Restrictions

Accessing proprietary APIs and comprehensive datasets comes with prohibitive costs. These financial barriers effectively gatekeep innovation, making it impossible for smaller municipalities, independent researchers, or cash-strapped startups to engage with the very data needed to build smarter, more efficient urban solutions. Annual licensing fees can run into six figures, severely limiting who can even get started.

Lack of Transparency & Verifiability

Proprietary vendors rarely disclose their data sources, methodologies, or the underlying algorithms that process raw information into actionable insights. This lack of transparency means users cannot audit the data for potential biases, assess its true accuracy, or verify its operational integrity. Critical public safety decisions are often made based on data whose provenance remains a mystery.

Vendor Lock-in & Stifled Innovation

Once integrated, proprietary solutions create a deep dependency. Migrating away from a single vendor’s ecosystem is often costly and complex, creating significant vendor lock-in. This dependency stifles innovation, as cities and developers are confined to the features and integrations offered by their existing provider, unable to easily adopt emerging technologies or integrate diverse data streams.

Public Infrastructure, Private Control

The irony is stark: critical public safety and infrastructure decisions, impacting millions of lives daily, are increasingly based on data controlled by private entities. This raises profound ethical and governance concerns. When the foundational data for urban planning—from traffic signal timing to emergency route optimization—is privately owned, the public’s direct interest often takes a backseat to corporate profit.

Warning: Relying on proprietary data sources for public infrastructure is akin to building a city on a foundation you don’t own and can’t inspect. This model is unsustainable and fundamentally undemocratic.

OpenTrafficMap: Architecting Transparency for Real-time Geographic Data

OpenTrafficMap represents a paradigm shift, moving away from closed, proprietary systems towards an open, collaborative model. It’s a vision built on robust open-source principles, drawing inspiration from and expanding upon initiatives like the Open Traffic (OTv2) platform and specific real-time visualization efforts like those seen at opentrafficmap.org. This platform is designed to make real-time urban data a public utility, not a private commodity.

Built on OpenStreetMap

The foundation of OpenTrafficMap is OpenStreetMap (OSM), the globally recognized, community-mapped project for geographic context. Leveraging OSM means OpenTrafficMap inherits a rich, detailed, and continuously updated spatial dataset, providing the robust data structures and geographic context necessary for accurate traffic mapping. This also allows for features like OSMLR (OpenStreetMap Linear Referencing), which precisely identifies road segments for matching traffic statistics, a critical capability adopted from projects like OTv2.

Standardized, Open Data Models

OpenTrafficMap defines and champions open JSON schemas for real-time events. This includes critical data points such as traffic light states, granular C-ITS (Cooperative Intelligent Transport Systems) vehicle probe data, various IoT sensor readings, and dynamic road conditions. Standardizing these models (e.g., using Geräte-JSON for device-level information as seen in early opentrafficmap.org implementations) ensures seamless interoperability and reduces integration friction across diverse data sources.

Diverse Data Ingestion

A core strength is its capacity for diverse data ingestion. OpenTrafficMap can integrate data directly from:

  • Municipal traffic signal controllers: Real-time signal phase and timing (SPaT) information.
  • C-ITS enabled vehicles: Anonymized speed, heading, and position data from connected cars.
  • IoT sensors: Environmental data, occupancy statistics, and other roadside sensor inputs.
  • Validated community observations: Citizen science contributions, verified through robust protocols, supplementing automated systems.

This multi-source approach dramatically increases data coverage and resilience.

Decentralized Processing & Verifiability

To address the critical issue of trust and data integrity, OpenTrafficMap explores advanced methods for decentralized processing. This includes peer-to-peer data validation mechanisms, where multiple independent sources can cross-verify reported conditions. Furthermore, the integration of distributed ledger technologies (DLT) offers a potential pathway to ensure data integrity, traceability, and immutability, establishing an unchallengeable audit trail for critical traffic events. This mitigates concerns about data manipulation or single points of failure.

API-First Approach

At its heart, OpenTrafficMap is built with an API-first philosophy. It provides well-documented, RESTful APIs for both data submission and consumption. This approach significantly lowers the barrier to entry for developers, fostering a vibrant ecosystem of applications, services, and research built upon a common, openly accessible data backbone. The APIs are designed for simplicity and scalability, supporting rapid development and deployment of new solutions.

Illustrative Code Examples: Engaging with the OpenTrafficMap API

Engaging with OpenTrafficMap’s open APIs is designed to be straightforward, allowing developers to quickly integrate real-time geographic data into their applications. These examples demonstrate common interactions, from fetching crucial traffic light states to contributing anonymized probe data.

For these examples, we’ll assume a hypothetical OpenTrafficMap API endpoint at https://api.opentrafficmap.org/v1.

Python: Fetching Real-time Traffic Light Status

This Python snippet demonstrates how to query the OpenTrafficMap API to retrieve the current status of traffic lights within a specified geographical bounding box. We’ll use the requests library for HTTP communication and process the JSON response.

import requests
import json
import os

# Define the hypothetical OpenTrafficMap API endpoint
OPENTRAFFICMAP_API_BASE = "https://api.opentrafficmap.org/v1"
API_KEY = os.environ.get("OTM_API_KEY", "YOUR_DEFAULT_API_KEY") # Use environment variable for security

def fetch_traffic_light_status(bbox_coords: tuple) -> dict:
    """
    Fetches real-time traffic light status within a given bounding box.
    bbox_coords: A tuple (min_lon, min_lat, max_lon, max_lat)
    Returns: A dictionary of traffic light states or an error message.
    """
    endpoint = f"{OPENTRAFFICMAP_API_BASE}/traffic_lights/status"
    params = {
        "bbox": f"{bbox_coords[0]},{bbox_coords[1]},{bbox_coords[2]},{bbox_coords[3]}",
        "api_key": API_KEY # Authentication for production systems
    }
    
    try:
        response = requests.get(endpoint, params=params, timeout=10) # 10-second timeout
        response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
        
        data = response.json()
        print(f"Successfully fetched {len(data.get('features', []))} traffic lights.")
        return data
        
    except requests.exceptions.HTTPError as e:
        print(f"HTTP Error fetching traffic light status: {e}")
        return {"error": str(e), "status_code": e.response.status_code}
    except requests.exceptions.ConnectionError as e:
        print(f"Connection Error fetching traffic light status: {e}")
        return {"error": str(e)}
    except requests.exceptions.Timeout as e:
        print(f"Timeout Error fetching traffic light status: {e}")
        return {"error": str(e)}
    except json.JSONDecodeError as e:
        print(f"JSON Decode Error: Could not parse response from API: {e}")
        return {"error": "Invalid JSON response"}
    except Exception as e:
        print(f"An unexpected error occurred: {e}")
        return {"error": "An unexpected error occurred"}

# Example usage: Bounding box for a small area in Graz, Austria (from opentrafficmap.org context)
graz_bbox = (15.42, 47.06, 15.48, 47.08) # Example coordinates

if __name__ == "__main__":
    traffic_data = fetch_traffic_light_status(graz_bbox)
    if traffic_data and "features" in traffic_data:
        # Print details for the first few traffic lights
        for i, light in enumerate(traffic_data["features"][:3]):
            print(f"\nTraffic Light {i+1} (ID: {light['id']}):")
            print(f"  Location: {light['geometry']['coordinates']}")
            print(f"  Current State: {light['properties']['state']}")
            print(f"  Last Updated: {light['properties']['timestamp']}")
    elif traffic_data:
        print("\nError or no data found:")
        print(json.dumps(traffic_data, indent=2))

This code snippet defines a function fetch_traffic_light_status that queries the /traffic_lights/status endpoint. It expects a GeoJSON-like response containing features, each representing a traffic light with its ID, coordinates, and current state (e.g., “red”, “green”, “yellow”). Error handling for network issues and API responses is also included, which is crucial for real-world applications.

JavaScript: Submitting Anonymized C-ITS Probe Data

This example illustrates how an in-vehicle system, mobile application, or simulator could contribute real-time, privacy-preserving speed and location data to OpenTrafficMap. This C-ITS (Cooperative Intelligent Transport Systems) probe data is vital for real-time traffic flow analysis. The data would typically be aggregated and anonymized before submission to prevent tracking individual vehicles.

// Hypothetical OpenTrafficMap API endpoint for probe data submission
const OPENTRAFFICMAP_API_BASE = "https://api.opentrafficmap.org/v1";

async function submitAnonymizedProbeData(latitude, longitude, speed_kmh, heading_deg, timestamp_iso) {
    /**
     * Submits anonymized C-ITS probe data to the OpenTrafficMap API.
     * latitude: Current latitude of the vehicle.
     * longitude: Current longitude of the vehicle.
     * speed_kmh: Current speed in kilometers per hour.
     * heading_deg: Current heading in degrees (0-359, North=0).
     * timestamp_iso: ISO 8601 formatted timestamp of the data point.
     */
    const endpoint = `${OPENTRAFFICMAP_API_BASE}/probe_data/submit`;
    const dataPayload = {
        // Unique, but anonymized vehicle identifier for aggregation (e.g., session ID)
        "probe_id": "anon_vehicle_ABCDEF12345", 
        "timestamp": timestamp_iso,
        "location": {
            "type": "Point",
            "coordinates": [longitude, latitude] // GeoJSON standard: [longitude, latitude]
        },
        "properties": {
            "speed": speed_kmh,      // Speed in km/h
            "heading": heading_deg,  // Heading in degrees
            ""
        }
    };

    try {
        const response = await fetch(endpoint, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                // API Key for submission, if required for authenticated data sources
                'X-API-KEY': 'YOUR_SUBMISSION_API_KEY' 
            },
            body: JSON.stringify(dataPayload)
        });

        if (!response.ok) {
            const errorText = await response.text();
            throw new Error(`HTTP error! Status: ${response.status}, Details: ${errorText}`);
        }

        const result = await response.json();
        console.log("Probe data submitted successfully:", result);
        return result;

    } catch (error) {
        console.error("Error submitting probe data:", error);
        return { success: false, message: error.message };
    }
}

// Example usage: Simulate a vehicle sending data
const currentLat = 47.0707;
const currentLon = 15.4395;
const currentSpeed = 55.2; // km/h
const currentHeading = 120.0; // degrees
const currentTimestamp = new Date().toISOString(); // Current time in ISO 8601 format

if (typeof window !== 'undefined') { // Check if running in a browser environment
    // In a real application, this would be triggered by location updates
    submitAnonymizedProbeData(currentLat, currentLon, currentSpeed, currentHeading, currentTimestamp)
        .then(result => console.log("Submission result:", result));
} else { // Node.js environment simulation
    (async () => {
        const result = await submitAnonymizedProbeData(currentLat, currentLon, currentSpeed, currentHeading, currentTimestamp);
        console.log("Submission result (Node.js):", result);
    })();
}

This JavaScript function submitAnonymizedProbeData creates a JSON payload with location, speed, heading, and a timestamp, then sends it via a POST request to the OpenTrafficMap API. The probe_id would be anonymized or aggregated to maintain privacy while still allowing for statistical analysis.

Parsing Geräte-JSON for Device Insights

The concept of “Geräte-JSON” (Device JSON) seen in opentrafficmap.org is a critical element for detailed insights into connected infrastructure. It allows for the retrieval and interpretation of specific device-level payloads, providing granular sensor or controller information beyond just a simple status. This is crucial for diagnostics, maintenance, and advanced urban analytics.

Let’s assume a hypothetical Geräte-JSON response for a traffic light controller:

{
  "device_id": "TL-GRAZ-001A",
  "device_type": "TrafficLightController",
  "firmware_version": "v2.3.1-stable",
  "status": "operational",
  "last_communication": "2026-04-29T14:35:01Z",
  "power_consumption_watts": 85.5,
  "signal_groups": [
    {
      "group_id": "sg-1",
      "direction": "north-south",
      "current_phase": "green",
      "next_phase": "yellow",
      "time_to_next_phase_seconds": 15
    },
    {
      "group_id": "sg-2",
      "direction": "east-west",
      "current_phase": "red",
      "next_phase": "red",
      "time_to_next_phase_seconds": 30
    }
  ],
  "sensor_data": {
    "loop_detector_1": { "status": "active", "occupancy_percentage": 15 },
    "camera_traffic_count": 230
  }
}

A simple Python function to parse and extract key insights:

import json

def parse_geraete_json(json_data: str) -> dict:
    """
    Parses a Geräte-JSON string and extracts key device insights.
    json_data: The raw JSON string from the device API.
    Returns: A dictionary of extracted insights.
    """
    try:
        device_info = json.loads(json_data)

        insights = {
            "DeviceId": device_info.get("device_id"),
            "DeviceType": device_info.get("device_type"),
            "Status": device_info.get("status"),
            "FirmwareVersion": device_info.get("firmware_version"),
            "LastComm": device_info.get("last_communication"),
            "PowerConsumption": f"{device_info.get('power_consumption_watts', 'N/A')}W"
        }

        # Extract signal group details
        signal_groups_summary = []
        for sg in device_info.get("signal_groups", []):
            signal_groups_summary.append(
                f"Group {sg.get('group_id')} ({sg.get('direction')}): "
                f"Current='{sg.get('current_phase')}', "
                f"Next='{sg.get('next_phase')}' in {sg.get('time_to_next_phase_seconds')}s"
            )
        insights["SignalGroups"] = signal_groups_summary

        # Extract sensor data if available
        sensor_data = device_info.get("sensor_data", {})
        if sensor_data:
            insights["SensorDataSummary"] = {
                k: v for k, v in sensor_data.items() # Copy all sensor data
            }

        return insights

    except json.JSONDecodeError as e:
        print(f"Error decoding Geräte-JSON: {e}")
        return {"error": "Invalid JSON format"}
    except Exception as e:
        print(f"An unexpected error occurred during parsing: {e}")
        return {"error": "Parsing failed"}

# Example usage with the hypothetical Geräte-JSON
example_geraete_json = """
{
  "device_id": "TL-GRAZ-001A",
  "device_type": "TrafficLightController",
  "firmware_version": "v2.3.1-stable",
  "status": "operational",
  "last_communication": "2026-04-29T14:35:01Z",
  "power_consumption_watts": 85.5,
  "signal_groups": [
    {
      "group_id": "sg-1",
      "direction": "north-south",
      "current_phase": "green",
      "next_phase": "yellow",
      "time_to_next_phase_seconds": 15
    },
    {
      "group_id": "sg-2",
      "direction": "east-west",
      "current_phase": "red",
      "next_phase": "red",
      "time_to_next_phase_seconds": 30
    }
  ],
  "sensor_data": {
    "loop_detector_1": { "status": "active", "occupancy_percentage": 15 },
    "camera_traffic_count": 230
  }
}
"""

if __name__ == "__main__":
    device_insights = parse_geraete_json(example_geraete_json)
    if "error" not in device_insights:
        print("\n--- Device Insights ---")
        for key, value in device_insights.items():
            if isinstance(value, list):
                print(f"{key}:")
                for item in value:
                    print(f"  - {item}")
            elif isinstance(value, dict):
                print(f"{key}:")
                for sub_key, sub_value in value.items():
                    print(f"  - {sub_key}: {sub_value}")
            else:
                print(f"{key}: {value}")
    else:
        print(json.dumps(device_insights, indent=2))

This parsing example demonstrates how developers can directly interact with the granular data streams from physical devices, offering profound capabilities for smart city management, predictive maintenance, and operational optimization. The Geräte-JSON offers a powerful window into the health and activity of urban infrastructure.

Building a Simple Geo-Fence Alert System

Real-time data becomes transformative when coupled with proactive alerts. This Python snippet outlines the logic for a basic geo-fence alert system. It polls OpenTrafficMap for events within a defined area and triggers an action if specific conditions are met, such as a road closure or an accident report. In a production system, this would typically involve WebSockets or a streaming API for lower latency.

import time
import requests
import json
import os

# Assume the same API base and key as before
OPENTRAFFICMAP_API_BASE = "https://api.opentrafficmap.org/v1"
API_KEY = os.environ.get("OTM_API_KEY", "YOUR_DEFAULT_API_KEY")

def check_geo_fence_events(bbox_coords: tuple, event_type: str = "road_closure") -> list:
    """
    Checks for specific real-time events within a given bounding box.
    bbox_coords: A tuple (min_lon, min_lat, max_lon, max_lat)
    event_type: The type of event to filter for (e.g., "road_closure", "accident", "heavy_congestion").
    Returns: A list of matching events.
    """
    endpoint = f"{OPENTRAFFICMAP_API_BASE}/events"
    params = {
        "bbox": f"{bbox_coords[0]},{bbox_coords[1]},{bbox_coords[2]},{bbox_coords[3]}",
        "type": event_type,
        "api_key": API_KEY
    }
    
    try:
        response = requests.get(endpoint, params=params, timeout=5)
        response.raise_for_status()
        data = response.json()
        return data.get("features", [])
        
    except requests.exceptions.RequestException as e:
        print(f"Error checking geo-fence events: {e}")
        return []

def trigger_alert(event_details: dict):
    """
    Placeholder function to trigger a notification or action.
    In a real system, this could send an email, SMS, push notification,
    or update a dashboard.
    """
    print(f"\n--- ALERT TRIGGERED ---")
    print(f"  Event ID: {event_details.get('id')}")
    print(f"  Type: {event_details.get('properties', {}).get('type')}")
    print(f"  Severity: {event_details.get('properties', {}).get('severity')}")
    print(f"  Description: {event_details.get('properties', {}).get('description')}")
    print(f"  Location: {event_details.get('geometry', {}).get('coordinates')}")
    print(f"-----------------------\n")
    # Example: send_email("[email protected]", "Road Closure Alert", f"Event: {event_details}")

# Example usage: Monitor a critical intersection in a specific city
monitored_area_bbox = (15.43, 47.07, 15.44, 47.075) # A smaller bbox for a specific area
alert_event_type = "road_closure"
polling_interval_seconds = 30 # Check every 30 seconds

if __name__ == "__main__":
    print(f"Starting Geo-Fence Alert System for '{alert_event_type}' events in {monitored_area_bbox}...")
    print(f"Polling every {polling_interval_seconds} seconds.")

    while True:
        events = check_geo_fence_events(monitored_area_bbox, alert_event_type)
        if events:
            for event in events:
                trigger_alert(event)
        else:
            print(f"No '{alert_event_type}' events detected in the area at {time.ctime()}.")
        
        time.sleep(polling_interval_seconds)

This geo-fencing example demonstrates the proactive power of OpenTrafficMap’s real-time data. Such systems are critical for emergency services, logistics, and smart city operations, enabling immediate responses to dynamic urban conditions.

The ‘Gotchas’: Navigating the Real-World Roadblocks to Adoption

While the vision for OpenTrafficMap is compelling, establishing a community-driven, real-time data platform of this magnitude is not without significant challenges. These “gotchas” are the practical hurdles that developers, city planners, and community contributors must actively address for successful, widespread adoption.

Data Quality & Governance

The primary challenge for any community-driven data initiative is ensuring the veracity, reliability, and currency of information, especially at scale. How do we prevent malicious data injection or simply erroneous observations? OpenTrafficMap requires robust validation protocols, potentially combining automated anomaly detection, peer review, and reputation systems for contributors. Clear governance structures for data submission, moderation, and dispute resolution are absolutely critical. Without a solid framework, the platform risks becoming noisy or unreliable.

Scalability & Performance

Managing the ingestion, processing, and distribution of massive real-time data streams from an entire city or region demands exceptional scalability and low latency. Consider thousands of traffic lights, millions of C-ITS probes, and countless IoT sensors updating every few seconds. This requires a highly optimized, distributed architecture capable of handling petabytes of data annually and serving millions of API requests with sub-second response times. The infrastructure costs and engineering complexity for such a system are immense.

Funding & Sustainability

Open-source critical infrastructure projects often struggle with securing consistent funding and resources for long-term maintenance, development, and expansion. Unlike proprietary vendors with direct revenue streams, OpenTrafficMap relies on grants, sponsorships, and community contributions. Ensuring its financial sustainability, attracting skilled developers, and maintaining necessary server infrastructure is a continuous battle. A clear, transparent funding model is essential to avoid project abandonment or stagnation.

Interoperability & Integration with Legacy Systems

Most municipal traffic infrastructure is a patchwork of legacy systems, often proprietary and built decades ago. Bridging the gap between modern open standards and these entrenched, often closed, systems is a monumental task. Developing adapters, translators, and robust integration layers is necessary. This isn’t just a technical challenge; it often involves navigating complex procurement processes and overcoming bureaucratic inertia within public agencies.

Ecosystem Fragmentation & Identity

The geospatial and open-source communities are vibrant but can sometimes suffer from fragmentation. There are various “Open Traffic” or “Smart City” initiatives, which can lead to confusion or duplicated effort. OpenTrafficMap must clearly articulate its unique value proposition, establish a strong identity, and actively collaborate with existing projects (like OpenStreetMap, Valhalla, Conveyal’s Open Traffic) to avoid fragmentation and build a cohesive ecosystem. A fragmented effort dilutes resources and slows adoption.

The Verdict for 2026: Why OpenTrafficMap is the Undeniable Future

The writing is on the wall: the era of proprietary, black-box traffic data is rapidly approaching its end. By 2026, OpenTrafficMap will not merely be an alternative; it will be the de facto standard for any entity serious about smart city development and transparent urban management. This isn’t just aspirational; it’s a necessary evolution driven by ethical imperative, technical superiority, and economic pragmatism.

Ethical & Public Good Superiority

OpenTrafficMap fundamentally shifts ownership of critical urban data from private hands back to the public domain. This fosters unprecedented trust and accountability in urban decision-making. No longer will cities be held hostage by opaque algorithms or undisclosed data biases. This is a return to data as a public utility, enabling genuinely equitable and informed urban development for all citizens.

Technical Robustness & Extensibility

The inherent nature of open-source development, subject to continuous scrutiny and contribution from a global community, leads to demonstrably more resilient, adaptable, and innovative solutions than any black-box alternative. OpenTrafficMap’s modular architecture and adherence to open standards (like OSM and OSMLR) ensure it can evolve rapidly, incorporate new technologies (e.g., advanced AI/ML for prediction, quantum-resistant encryption), and withstand the test of time, far surpassing the often-stagnant development cycles of proprietary offerings.

Unleashed Innovation

By dismantling cost and access barriers, OpenTrafficMap creates an incredibly fertile ground for new applications. Imagine startups building next-generation logistics platforms without crippling data costs, researchers developing advanced urban planning models with verifiable data, or emergency services optimizing response routes in real-time, all powered by open data. This democratization of access will spark an explosion of innovation that is currently unimaginable under the proprietary regime.

Economic Value & Cost Reduction

For public agencies, OpenTrafficMap signifies a dramatic reduction in data acquisition costs, freeing up substantial budgetary resources. These funds can then be re-allocated to value-added services, infrastructure improvements, or nurturing local tech ecosystems around the open platform. The collective contribution model also means development costs are shared, leading to a much more efficient use of resources globally. Anticipate a minimum of 50% reduction in annual data licensing costs for early adopters by Q4 2026.

Empowering Smart Cities

The promise of “Smart Cities” has often been hampered by fragmented data and vendor lock-in. OpenTrafficMap provides the verifiable, real-time insights that enable genuinely responsive, data-driven urban planning and resource management. From dynamic traffic flow optimization to proactive infrastructure maintenance, this platform will fundamentally improve the quality of life for urban dwellers.

The Verdict: If your organization relies on proprietary traffic data, you are operating on borrowed time. Migrate to OpenTrafficMap, or integrate its data streams, by Q3 2026. Start by piloting specific applications – perhaps a geo-fenced alert system for public works or feeding anonymized fleet data to a local OpenTrafficMap instance. Invest in the open-source community, contribute resources, and evangelize its adoption. The future of urban intelligence is open, and those who fail to embrace this shift will find themselves lagging behind, burdened by antiquated systems and missed opportunities. The time for community-driven, open real-time geographic data is not coming; it is here.