NS3 is the followup to the wildly successful NS2 project. NS2 was, for many years, the reference network simulator for IP networks to the point that more than 50% or all papers published in many conferences and journals used NS2 to validate their research. Despite (or because of) this success, NS2 is showing its age: its architecture suffers from a number of important problems which could not be solved with a thorough redesign. This lead a number of US-based researchers to start the development of NS3 from scratch with NSF funding. Through our involvement in the NS3 project from its very early stages (we were invited to its kickoff meeting), we contributed to the architecture and the implementation of its core facilities. Most notably, we implemented the event scheduler, the packet data structure, the tracing subsystem, important aspects of the object model, and the default network node programming interface. We also worked on the first version of the UDP/IPv4 stack. This work was based on YANS ("Yet Another Network Simulator") which we developed just prior to starting work on NS3.