Molecular Content and the Separation of Concerns

Our present tactics of writing and generating internet content material appear ill-prepared for the wishes of the destiny.  Content manufacturers focal point on making plans articles or internet pages, however present approaches aren’t sufficiently scalable or versatile.  Internet publishers want to produce rising amounts of an increasing number of particular content material.  Top quantity content material nonetheless calls for an excessive amount of human effort: the tedious crafting of generic textual content, and/or difficult making plans that steadily supplies insufficient flexibility.    Content manufacturers, the use of equipment designed for growing articles, lack a viable technique for growing content material that machines can use in new contexts, similar to voice interfaces.  Earlier than audiences see the content material, machines want to act on it.  It’s time to believe the device as a key target audience phase, as a substitute of as a incidental birthday celebration.

Inside of the content material technique group, a dialogue is beginning about making content material “molecular”.  Content molecules are  basic development blocks that may be mixed and reworked in quite a lot of tactics.  The idea that nonetheless lacks an exact definition.  However it kind of feels  a compelling metaphor for fascinated about content material, given the various instructions content material is being pulled.   Molecules attach in combination, like Tinkertoys™.  Forces (industry, technical, and shopper personal tastes) are pulling content material in several instructions.  Find out how to attach molecules of content material in combination is a urgent factor.  The metaphor of molecular content material provides a possibility to reimagine how content material is created, and the way it can serve destiny wishes.

“A molecule of content material is the smallest solid self reliant section of content material, with a novel objective. Molecules, of various objective, may also be constructed into solid compounds of content material so as to shape which means and supply a objective.” — Andy McDonald and Toni Byrd-Ressaire

Content must serve many purposes.  It should supply coherent narratives because it all the time has finished.  However it’s also wanted briefly bursts as neatly.  Content will want be interactive: responding to person requests, expecting wishes, updating in actual time as cases alternate.  Molecular content material is essentially other from earlier concepts of “modular” content material.  Modular content material are static standalone chunks of phrases.  Molecular content material is data-aware: responsive, interactive and updatable.  Molecular content material is attached to good judgment, and will get inquisitive about the context it’s used.

In the destiny we will be expecting content material will want to be:

  • Ready to be discuss and pay attention
  • Succesful of animation to turn a metamorphosis in state
  • Ready to be in contact with device sensors
  • Succesful of converting its tone of voice in keeping with the person’s state of consideration.

The perception of form moving phrases turns out implausible — particularly to authors conversant in controlling every phrase as it seems that in a textual content.  However phrases are truly only a particular shape of information — significant information.  Computer systems can manipulate information in all approach of tactics.

Content for human conversation may also be extra advanced than not unusual laptop information.  Current information practices will give a contribution to the foundations of molecular content material.  However they’ll want to be prolonged and enhanced to make stronger the distinctive wishes of phrases and writing.

Writers don’t like taking into consideration phrases as information.  They lift two objections.  First, they believe phrases as extra nuanced  than information.  2d, they fear that the procedure of writing will resemble programming.  Their issues are legitimate.  No development will occur if answers are too inflexible, or too advanced.  At the identical time, writers want to get ready for the risk that the procedure of internet writing will essentially alternate.

4 Hidden Actions in Writing

Writing is a tacit procedure, hardly ever topic to analytic scrutiny.    We’re conscious we shape sentences involving topic, verbs and items.  Those get joined in combination into paragraphs, and into articles.  However the procedure may also be so iterative that we don’t realize separate steps. When writers discuss procedure, they usually check with rituals fairly than workflows.

If we wreck down the writing procedure, we see other actions:

  1. Making statements (in most cases sentences)
  2. Opting for the topics to write down about in statements.
  3. Organizing those statements right into a float.
  4. Making judgments via implicit references.

Implicit references are the stealthiest.  In our speech and writing, people summarize ideas.  We would possibly make implicit statements, or render an particular judgment that saves us from having to checklist the whole lot (fro instance, announcing “the very best…”, or “just right…” ).  Individuals who paintings with information discuss enumeration — mainly, making a definitive checklist of each and every price (e.g, the seven days of the week.)  Once we communicate, we think shared wisdom fairly than repeat it.  We think others don’t need an entire checklist of each and every town in a rustic, they simply need to know the greatest towns.

If anything else, expertise has made the writing observe blur in combination those actions much more.  When we will rewrite on the display screen, we will reduce and change with abandon.  The stringing in combination of phrases turns into subconscious.  Any try to make the procedure extra particular, and controlled, can really feel restricting, and is steadily met with resistance.

One of the large unanswered questions on molecular content material is write it.  Molecular content material will most likely require a brand new approach of growing content material. First, we want to read about the procedure of internet writing.

The 3 Writing Workflows

Any internet writing procedure wishes to deal with a number of questions:

  • What issues (correct nouns or entities) do you wish to have to speak about?
  • What statements do you wish to have to make about these items?
  • Find out how to construction those statements (what template to make use of)?

Those questions may also be addressed in 3 other sequences or workflows:

  1. Creator-driven
  2. Template-driven
  3. Area-driven.

The writer-driven means treats writing as a craft, fairly than as a procedure. The series begins with a clean web page. The writer writes a sequence of statements.  He buildings those statements.  In spite of everything, he would possibly later tag issues discussed in the textual content to spot entities.

The writer-driven series is:

  1. Write statements
  2. Construction textual content
  3. Tag textual content

The template-driven series begins with a template.  This means is rising in popularity, with merchandise like GatherContent offering templated paperwork that authors can fill-in.  The construction is pre-determined.  It isn’t in contrast to filling in a web based activity software.  The writer wishes so as to add textual content inside of packing containers on a kind.  Later, the textual content may also be tagged to spot entities discussed.

The template-driven series is:

  1. Select template or construction
  2. Write statements
  3. Tag Textual content.

The template-driven means can on occasion permit the reuse of some blocks of textual content.  However steadily, the purpose of templates is to arrange content material and facilitate the inputting of textual content.  A not unusual group may give consistency for  audiences viewing other content material.  However such construction doesn’t itself scale back the quantity of writing required if the content material has a single-use.

The domain-driven series begins via opting for what entities (other folks, puts or issues) the writer plans to speak about.  Entities are the key variables in content material.  They’re what other folks on the lookout for content material are perhaps to be in quest of. Shouldn’t we all know what entities we will be able to be speaking about ahead of we begin writing about them?  As soon as the entities are selected, authors write statements about them.  They believe what may also be mentioned about them.  Writers can prepare those statements via associating them with packing containers that offer construction.  In contrast to the different approaches, authors don’t want to fear about tagging, as a result of the entities are already tagged.

The domain-driven series is:

  1. Select entities (pre-tagged)
  2. Write statements
  3. Select packing containers for construction.

Area-driven content material writes content material round entities. In different approaches, figuring out what entity is discussed is an afterthought, right through tagging.  As a result of it’s entity targeted, domain-driven content material is definitely matched to the wishes molecular content material.

Molecular Content via Area-driven Writing

Area-driven content material isn’t new, however it’s nonetheless now not widely recognized.  I wrote about content material and domain names as they relate to Italian wine a number of years in the past when I used to be dwelling in Italy.  Fortuitously, a brand new ebook has simply pop out via Carrie Hane and Mike  Atherton referred to as Designing Hooked up Content talks about domain-driven content material intimately.   It’s a very good position to begin to learn to take into accounts making plans content material from a website point of view.  For writers short of to know the way domain names can affect writing, I like to recommend the weblog via Teodora Petkova, who has been writing about this subject broadly.

Area-driven writing would possibly appear tough to ascertain.  How will one select entities to write down about ahead of writing?  Possibly writers may faucet to choose to be had entities, similar to they faucet to choose to be had airline seats.  The device might be hooked up to an open supply wisdom graph that describes entities; a rising quantity of wisdom graphs are to be had.

The entities decided on might be at the height of a display screen, reminding the publisher about what they will have to be writing about.  It would lend a hand writers take note to incorporate main points, or discover connections between subjects they may not suppose to discover.  A device may even helpfully be offering an inventory of synonyms for entities, in order that writers know what vocabulary they are able to draw on to speak about an issue.  Perhaps it might even suggest some present generic textual content about similar entities, and the writer may come to a decision if that textual content is acceptable for discussing the entities they’ve selected.

Area-driven writing is a superb are compatible for factually wealthy content material.  It’s now not an means to make use of to write down the subsequent nice novel.  Novelists will stick to the author-driven, clean web page means.

A lot internet writing is repetitive.  The main points alternate, however the frame of the textual content is the identical. Area-driven content material places the focal point on the ones main points.  It isolates the variables that adjust, from the ones which might be consistent.  In deliver consideration to the context that variables seem.

Even if the textual content of statements adjustments, domain-driven content material permits factual information to be reused in several content material.  If a product is discussed in quite a lot of content material, the worth can all the time seem beside the product identify, regardless of the place the product identify seems.

Two approaches to domain-driven writing are to be had, which can be utilized together.  The primary means creates reusable statements which might be acceptable to many alternative entities. The second one means permits customized statements for particular entities.

The primary means goals to standardize habitual patterns of writing via:

  1. Decomposing present writing into not unusual segments or chunks
  2. Normalizing or standardizing the textual content of those segments
  3. Reusing textual content of segments.

As a substitute of writing to make the textual content original-sounding, writers focal point on make the textual content more effective via lowering the variation of expression.  The emphasis is on comprehension.  It isn’t about boosting consideration via aiming for originality or the surprising.

Let’s consider you’ve a website online about taking good care of your canine.  You may have content material about other subjects, similar to grooming your canine, or coaching your canine.  Canines come in several breeds.  Does the breed of canine alternate anything else you assert about coaching recommendation?  Do you want to customise a paragraph about coaching necessities for particular breeds?  The website online may have a combination of generic content material that applies to all breeds, with some customized content material on the subject of a particular breed.  The delta in the content material is helping to flush out when a particular breed is a different case by hook or by crook.

The second one means is get started with entities — the key main points your content material addresses.  As a substitute of fascinated about grand issues and then the main points, you’ll be able to opposite the series.  In our canine website online instance, we begin with an assortment of entities associated with canine.  That is the canine area.  What may you wish to have to mention about the canine area?  A device may let you discover other angles.  You could select a breed of canine initially, most likely a poodle.  The device may display you a wide variety of ideas hooked up to a poodle.  Those ideas may well be get started of statements you’d need to make.  The device would resemble a super-helpful glossary.  It might spotlight other connections.  You should see different breeds of canine which might be both identical or dissimilar.  Seeing the ones entities may steered you to write down some statements evaluating other breeds of canine.  You could see ideas hooked up with canine, similar to touring with canine.  You should even drill down into sub-concepts, similar to air commute or automobile commute.  The revel in of touring with a canine via air is other in keeping with breed: as an example, a Dachshund verses a Saint Bernard.  If you want to write down statements to make stronger particular duties, the area mean you can determine similar other folks, organizations, issues, occasions, and places — all the entities which might be inquisitive about the area.

Area-driven content material is scalable.  You’ll get started with statements about particular issues, and then believe how you’ll be able to generalize those statements.

Slide from a presentation via Rob Gillespie

Molecular Content: How Content Will get Liberated

Molecular content material must be extremely versatile.  To ship such flexibility, other elements want to play neatly with the relaxation of the international. One can’t overstate the range that exists lately in the internet international.  Thousands and thousands of people and organizations are looking to do quite a lot of issues, creating new answers.   Variety is expanding.  New platforms, new syntaxes, new channels, new programming languages, new architectures should all be accommodated.

We want to let move of the hope that one device can do the whole lot.  Tightly-coupled programs are seductive as a result of they appear to provide the whole lot you want in a single position. Tightly-coupled programs give upward thrust to authoring-development hybrid equipment similar to Dreamweaver or FontoXML.  Content, construction and good judgment all are living in combination in one supply, which turns out handy.  However your flexibility will likely be restricted via what the ones equipment help you do.

The perfect of unmarried sourcing of content material is turning into much less and much less viable.  Necessities are turning into too elaborate and various to be expecting a monolithic assortment of recordsdata following a unified structure to deal with all wishes.  A unmarried type for publishing internet content material can’t take care of the whole lot being thrown at it.  Fashions are brittle.  We want programs the place other purposes are treated in several tactics, relying on moving cases and various personal tastes.   While you use a unmarried type, others will reject what’s just right about an means as a result of they hate what’s restricting about it.

Internet publishing is turning into extra decoupled.  Headless CMSs separate the authoring atmosphere from content material control and supply.  Content control programs be offering APIs that let unbundled supply of content material.  Even the authoring procedure is getting unbundled, with new equipment specializing in dispensed enter, collaborative modifying and offline workflows.

Whilst the development towards decoupling is gaining momentum, maximum makes an attempt are restricted in scope.  The don’t essentially alternate how content material is created, or how it may be to be had.  They depend on the present writing paradigm, which remains to be file targeted.  Nobody but has advanced answers that make content material in reality molecular.

Molecular content material would require an intensive decoupling of programs that procedure content material.  The one solution to create content material this is truly future-ready is to take away dependencies that require others to undertake legacy approaches and conventions.  Programs want to be adaptable, the place events inquisitive about generating internet content material can change out other sub-processes as new wishes and higher approaches emerge.

The Backend of Molecular Content: Separation of Concerns

It’s difficult to discuss an idea as novel as molecular content material with out addressing how it might paintings.  I need to introduce an idea adopted via builders referred to as “the separation of issues” and speak about how it’s related to content material.

Think a developer sought after to code a heading that mentioned “Everyone seems to be speaking about John.”  In old-school HTML, builders would hard-code content material, construction, and in-line good judgment in combination in one HTML record.  Right here’s what unmarried supply content material may seem like:



<h1>Everyone seems to be speaking about<div identification="individual"></div>.</h1>


file.getElementById("individual").innerHTML = "John";




The record is difficult to learn, as a result of the whole lot is smushed in combination.  In one record, we’ve content material, construction, a variable, and a script.  It is going to sound environment friendly to have all that description in a single position, till you already know you’ll be able to’t reuse any of those parts.  It’s brittle.

In trendy observe, webpages are constructed from other parts: content material recordsdata, templates, and separate scripts offering not unusual good judgment.  Even metadata may also be injected right into a webpage from an out of doors record.  This decoupling permits many-to-many relationships.  One webpage would possibly name many scripts, and one script would possibly serve many webpages.  That is an instance of the separation of issues.

To split issues implies that code is arranged in keeping with its objective.  It’s more straightforward to handle and reuse code when not unusual issues with identical roles are grouped in combination.

Let’s believe the other issues or dimensions of how content material is assembled.  The scale that laptop programs believe to collect content material is in lots of respects very similar to how authors compile content material.  They’re:

  • Content variables
  • Narrative statements
  • Bins for content material
  • Common sense on the subject of content material

Those other issues may also be controlled one after the other.


Variables are the power in the content material.  As a result of they range, they’re attention-grabbing.  People are hardwired to note stuff that adjustments.

Variables are living inside statements.  Think want aloud to our significant other, Google, on our smartphone.  We are saying: “Adequate, Google.  Get me a flight between Paris and Hong Kong for not up to $500 in the first week of March.”  We have now a large number of variables in that one commentary.  We have now locations (Paris and Hong Kong), worth ($500) and time (first week of March).  Which of the ones is negotiable?  Once we take into accounts variables as being topic to negotiation, we will see how statements may alternate.

Variables animate statements the approach atoms animate molecules, to make use of a metaphor.

Variables are incessantly correct nouns or entities, that are visual in the content material.   Such variables are descriptive metadata about the content material.  A value discussed in a commentary is an instance.

Some variables aren’t visual.  They’re background data that gained’t display up in a commentary, however will likely be used to select statements.  Such variables are steadily administrative metadata about content material.  As an example, to grasp if a commentary is new or previous, lets get right of entry to a “printed on” date variable.

What makes variables robust is that they are able to be related to every different.  Those aren’t random phrases like the ones  utilized by a random word generator.  Variables apply patterns, and shape associations.

As an example, if we needed to explain an individual, we begin via fascinated about the variables related to an individual.

Individual :

  Title: John,

  Gender: Male,

  Occupation: Painter

A distinct individual may have identical variables, however with other variable values.  We will be able to stay including variables that may well be helpful.  That is the factual uncooked subject matter that can be utilized in our content material.

The most important level about variables is that they are able to be represented alternative ways.  As a result of we need to separate issues up to conceivable, the variable lives one after the other from statements, as a substitute of being embedded in them.  As a result of variables are separate, they are able to be reworked to serve other wishes.  We don’t fear about what syntax is used.  It might be JSON, or YAML or Turtle.  When variables exist one after the other, their syntax may also be simply transformed.  We additionally don’t fear about what schema is used.  We will be able to use other schemas, and notice the equivalences between how other schemas check with a variable.  We will be able to reassign the identify of a variable if required.  Perhaps we need to check with an individual’s activity as a substitute of an individual’s career.  Now not an issue.


Statements are usually textual content, even though they might be an audio or video clip, and even an SVG graphic.  I’ll keep on with textual content, since it’s maximum acquainted and absolute best to speak about.

Statements will steadily be whole sentences, most likely a number of similar sentences.  However they might be shorter words similar to a slogan or the line of a track.  Statements may also be added to different statements.  Every line of a track may also be joined in combination to supply a commentary conveying the track’s complete lyrics.

Statements develop into robust when utilized in more than one puts. Statements can accommodate visual variables to supply commentary permutations.  Some statements gained’t use variables, and will likely be the identical anyplace they seem.

Statements are the fundamental molecules of content material.  Some statements will likely be quick, and some will likely be lengthy.    The period relies on how constant the data is.  We will be able to use variables to supply commentary permutations, however the statements themselves keep constant.  Once we want want to discuss positive variables handiest in some scenarios, then new statements are wanted.

Let’s have a look at how statements can incorporate variables.  We can use the individual variables from our earlier instance.

Statement_1 : “Everyone seems to be speaking about , the in style .”

Statement_2: “’s Large Second”

Those are two then again worded statements which may be made about the identical individual.  Perhaps we need to use them in several contexts.  Or we need to check which is extra in style.  Or perhaps they’ll be each utilized in the identical article.  As a result of those statements are impartial, they are able to be utilized in some ways.

I’ve used “pseudocode” to turn how variables paintings inside statements.  If we’ve many individuals, we will be selective about which of them get discussed.

However the syntax used to constitute the textual content can apply any conference.  It might be simple textual content, or a subset of Markdown.  We’re handiest concerned about representing the data, now not how it’s structured or introduced.  The guidelines is impartial of construction.  There’s no in-line markup.


Construction is how statements are organized and represented.  Construction is one of the two ways in which content material molecules get “bonded” to different molecules (the wrong way is good judgment, to be mentioned subsequent).

Statements and buildings have a many-to-many courting.  That suggests the identical commentary can be utilized in many alternative buildings, and a unmarried construction can accommodate multiple commentary.

A easy instance (once more the use of pseudocode) will display how statements get bonded into buildings.  It is so simple as shedding the commentary right into a structural part.

/// Structure_1

<h1> </h1>

/// However it might be as a substitute

/// Structure_2

<h2>  </h2>

A unmarried commentary might be implemented to many buildings, together with symbol captions or e mail headers.

As we believe a much wider vary of content material, we will see how statements want to be utilized in other templates.  As an example, the identical transcript would possibly want to seem as textual content of interview, and as subtitles of a video.

Construction will have to now not be hard-coded into statements the approach XML markup and CSS-selectors have a tendency to do.  That limits the reuse of statements.

Molecular content material will have to be impartial of any particular construction, and in a position to conform to quite a lot of buildings. We want construction flexibility.  Statements want to alternate structural roles.  We’re conversant in fascinated about a commentary having a hard and fast structural function.

Common sense

Common sense supplies directions about what content material to get.  It can be a script (a couple of steps to do), a question (a command to search out values of a undeniable sort), or a serve as (a reusable set of directions).

Common sense processes content material to symbolize it.  As an example, if the content material is set the “height” films this week, the good judgment does a question to resolve and show what the top-grossing movies are.  Common sense permits computer systems to make implicit statements, similar to writers do, which makes the textual content sound extra herbal.

“With content material molecules, content material is separated now not handiest from the presentation, however from the industry good judgment, this is from the approach the content material is processed and manipulated.”  Alex Mayscheff

Common sense is in a different way content material molecules can bond in combination.  When good judgment is implemented to statements, good judgment performs a matchmaking function.

Common sense may also be implemented to variables.  It might lend a hand to come to a decision the proper values to incorporate in a commentary.

A not unusual instance is when a question of a database generates an inventory.  The question asks the height 10 very best promoting literary fiction titles, and a commentary is returned with 10 titles in an inventory.

Common sense may give extra than just reporting information.  As device will get smarter, it’ll be capable of make extra herbal sounding statements.

Imagine a easy instance.  If we all know the gender of an individual, we will create new variables indicating the suitable individual pronoun and possessive pronoun to make use of.  Expressed in pseudocode, it would paintings like this:

Serve as(genderPronoun)

If Individual.Gender == Male


    PersonalPronoun -> He

    PossessivePronoun -> His



    PersonalPronoun -> She

    PossessivePronoun -> Her


Common sense can summarize variables so they’re more straightforward for people to understand.  If we handiest depend on variables, we need to see the values precisely has they’re recorded.   In previous examples, the variable used to be immediately injected right into a commentary.  The variable says: While you get right here, put a undeniable price right here.

The use of good judgment, a variable can name a serve as.  The serve as instructs: While you get right here, work out the suitable price to position right here.  This provides a lot more flexibility for the scope of values that can be utilized in statements.

As a result of the good judgment is separated from the variables and the statements, we don’t care what shape of good judgment is used.  It may well be PHP, Python or Javascript.  Or a question language similar to SQL or Sparql.  Or some new AI set of rules.  Builders may mix other programming languages, in order that other ones can carry out specialised roles.  This can be a very other state of affairs than exists when content material is encoded in XML, forcing builders to depend on XSLT or any other XML-focused language.

Systematizing What’s Regimen

My tour into the coding of molecular content material can give a misconception that writers will want to code in the destiny.  I’m hoping that isn’t the case.  Just about everybody I do know concurs that code is distracting when showing in writing.  Preferably, the separation of issues implies that code gained’t seem in statements.

What’s been lacking are programs that make it simple for writers to reuse details (variables), statements (content material chunks), and templates (buildings).  Programs will have to let writers upload some good judgment to their writing with out being worried about the programming in the back of it, most likely via opting for some pre-made “recipes” that may be dragged into textual content and inserted.  I’ve observed sufficient other efforts to simplify programs (from Jekyll to IFTTT to computerized ideas) to imagine writer-friendly equipment to make stronger molecular content material are conceivable.  However new programs emerge handiest when a big group believes there’s a higher approach.  Nobody individual, or corporate, can construct and promote a brand new device, a lot much less pressure its adoption.

Once I began out running in the internet international, all person interface displays had been in my opinion designed.  Every one had to be crafted and examined in my opinion.  Every display screen used to be a valuable introduction.  In the end, the UX group discovered that means used to be insanity.  UX other people weren’t in a position to stay alongside of the quantity of displays that customers had to see.  And UX personnel had been recreating the identical types of displays once more and once more.  In the end, the UX group followed elements, patterns and templates.  They created programs that might scale.  Authentic, new designs are wanted handiest in extremely novel scenarios, similar to new software platforms or enabling interplay expertise.  The remaining may also be reused and repeated.

Atom Design method via Brad Frost

UX designers now discuss an idea referred to as atomic design.  Atomic design sounds associated with molecular content material.

The transformation of UX design remains to be ongoing, but it surely’s spectacular in what has been accomplished already.  One may be expecting designers can be immune to expertise.  Many studied graphic design in artwork faculties, the use of coloured markers.  When making use of their graphics wisdom to internet design, they noticed the advantages of reusable CSS, followed plug-and-play Javascript frameworks, and began development part libraries. A lot of the development used to be the paintings of quite a lot of people looking to remedy not unusual issues.  Simplest lately have firms began advertising and marketing whole answers for UI part control.  Designers nonetheless love to comic strip, however they don’t be expecting display screen design to be a guide craft.

I’ve lengthy been perplexed why such a lot of artwork college grads can fortunately embody expertise, whilst such a lot of writers have an anti-technology perspective.  Designers have discovered how expertise can prolong their productiveness immensely. I’m hoping writers will uncover the identical.  A craft solution to writing is superb for novels, however insane for generating company internet content material.

Maximum of the normal structured writing approaches inbuilt XML are tightly-coupled, leading to programs which might be each rigid and overly advanced.  A extra loosely-coupled device, in keeping with a separation of issues, guarantees to be extra versatile, and may also be much less advanced, since adopters can select the features they want and are prepared to be told.  Designers have benefitted from open programs, similar to CSS patterns, Javascript frameworks, and different publicly to be had, reusable elements. Designers can select what expertise they need to use, steadily having multiple possibility. Writers want open programs to make stronger their paintings as neatly.

—  Michael Andrews

Leave a Reply

Your email address will not be published. Required fields are marked *