Traditional protocol implementation approaches capture the structural aspects of protocols in a common base that can be used accross layers. However, they are usually not very good at capturing the behavioral aspects. Two important implementation problems result, namely, reprogramming similar behavior and configuration of crosscutting concerns. In this paper, we present an approach to solve the problems of re-programming similar behavior and absence of systematic configuration mechanisms for crosscutting concerns in communication systems. Our approach is based on generative programming, has been implemented in C++ and has been validated with several protocols. We also sketch an approach for run-time reconfigurable protocol stacks.