Social networks are merely a reflection of certain realities among people that have been identified. But in order for people or even computer systems (such as expert systems) to make sense of the social network, it needs to be analyzed with various methods so that the characteristics of the social network can be understood in a meaningful context. This is challenging not only due to the number of people that can be on social networks, but the changes in relationships between people on the social network over time. In this paper, we develop a method to help make sense of dynamic social networks. This is achieved by establishing a hierarchical community structure where each level represents a community partition at a specific granularity level. By organizing each level of the hierarchical community structure by granularity level, a person can essentially 'zoom in' to view more detailed (smaller) communities and 'zoom out' to view less detailed (larger) communities. Communities consisting of one or more subsets of people having relatively extensive links with other communities are identified and represented as overlapping community structures. Mechanisms are also in place to enable modifications to the social network to be dynamically updated on the hierarchical and overlapping community structure without recreating it in real time for every modification. The experimental results show that the genetic algorithm approach can effectively detect hierarchical and overlapping community structures.