Hi, Im looking over the stack diagram again, and I just want to clarify a few points. According to the diagram, the stack is very modular (which is good). That said, lets use ping for an example. ping, as an app, only "knows about" the libnet.so sockets API, and libnet.so interfaces with the stack driver. The stack driver interfaces with core, and core interfaces with the protocol modules. Are there any violations anywhere in the code to this modularity? For example, any case where code in ping.c makes a call directly to a routine in the net stack driver, bypassing libnet.so? Also, where does the ethernet driver fit in? It looks like the ethernet module would interact with the driver, which then obviously controls the hardware... Thanks, Brennan