project folder structure
More flexible implementation

A factory class is used to instantiate the different markdown tags.
The available markdown tags are defined in the builder class and they have specific attributes associated with them. Those attributes can be overridden when asking the builder to instantiate the tags.