diff --git a/components/cycle-day/symptoms/bleeding.js b/components/cycle-day/symptoms/bleeding.js
index ecfaf20821c723f196488798cc210e84a71f8225..25e697cb9a1cf98fe96c472ce270e64887ccc094 100644
--- a/components/cycle-day/symptoms/bleeding.js
+++ b/components/cycle-day/symptoms/bleeding.js
@@ -9,7 +9,7 @@ import { saveSymptom } from '../../../db'
 import { bleeding as labels } from '../labels/labels'
 import ActionButtonFooter from './action-button-footer'
 import SelectTabGroup from '../select-tab-group'
-import { SymptomSectionHeader, AppText } from '../../app-text'
+import SymptomSection from './symptom-section'
 
 export default class Bleeding extends Component {
   constructor(props) {
@@ -36,27 +36,28 @@ export default class Bleeding extends Component {
     return (
       <View style={{ flex: 1 }}>
         <ScrollView style={styles.page}>
-          <View>
-            <SymptomSectionHeader>Heaviness</SymptomSectionHeader>
-            <AppText>How heavy is the bleeding?</AppText>
+          <SymptomSection
+            header="Heaviness"
+            explainer="How heavy is the bleeding?"
+          >
             <SelectTabGroup
               buttons={bleedingRadioProps}
               active={this.state.currentValue}
               onSelect={val => this.setState({ currentValue: val })}
             />
-            <SymptomSectionHeader>Exclude</SymptomSectionHeader>
-            <View flexDirection={'row'}>
-              <View flex={1}>
-                <AppText>{"You can exclude this value if it's not menstrual bleeding"}</AppText>
-              </View>
-              <Switch
-                onValueChange={(val) => {
-                  this.setState({ exclude: val })
-                }}
-                value={this.state.exclude}
-              />
-            </View>
-          </View>
+          </SymptomSection>
+          <SymptomSection
+            header="Exclude"
+            explainer="You can exclude this value if it's not menstrual bleeding"
+            inlineExplainer={true}
+          >
+            <Switch
+              onValueChange={(val) => {
+                this.setState({ exclude: val })
+              }}
+              value={this.state.exclude}
+            />
+          </SymptomSection>
         </ScrollView>
         <ActionButtonFooter
           symptom='bleeding'
diff --git a/components/cycle-day/symptoms/cervix.js b/components/cycle-day/symptoms/cervix.js
index b05f97534e05eccb0cdd15c8fc17ef21596a701f..4b792be1be2aa00cbfa19bb7f0e1b3b2cea051e6 100644
--- a/components/cycle-day/symptoms/cervix.js
+++ b/components/cycle-day/symptoms/cervix.js
@@ -9,7 +9,7 @@ import { saveSymptom } from '../../../db'
 import { cervix as labels } from '../labels/labels'
 import ActionButtonFooter from './action-button-footer'
 import SelectTabGroup from '../select-tab-group'
-import { SymptomSectionHeader, AppText } from '../../app-text'
+import SymptomSection from './symptom-section'
 
 export default class Cervix extends Component {
   constructor(props) {
@@ -48,36 +48,48 @@ export default class Cervix extends Component {
     return (
       <View style={{ flex: 1 }}>
         <ScrollView style={styles.page}>
-          <SymptomSectionHeader>Opening</SymptomSectionHeader>
-          <AppText>{labels.opening.explainer}</AppText>
-          <SelectTabGroup
-            buttons={cervixOpeningRadioProps}
-            active={this.state.opening}
-            onSelect={val => this.setState({ opening: val })}
-          />
-          <SymptomSectionHeader>Firmness</SymptomSectionHeader>
-          <AppText>{labels.firmness.explainer}</AppText>
-          <SelectTabGroup
-            buttons={cervixFirmnessRadioProps}
-            active={this.state.firmness}
-            onSelect={val => this.setState({ firmness: val })}
-          />
-          <SymptomSectionHeader>Position</SymptomSectionHeader>
-          <AppText>{labels.position.explainer}</AppText>
-          <SelectTabGroup
-            buttons={cervixPositionRadioProps}
-            active={this.state.position}
-            onSelect={val => this.setState({ position: val })}
-          />
-          <View style={styles.symptomViewRowInline}>
-            <SymptomSectionHeader>Exclude</SymptomSectionHeader>
+          <SymptomSection
+            header="Opening"
+            explainer={labels.opening.explainer}
+          >
+            <SelectTabGroup
+              buttons={cervixOpeningRadioProps}
+              active={this.state.opening}
+              onSelect={val => this.setState({ opening: val })}
+            />
+          </SymptomSection>
+          <SymptomSection
+            header="Firmness"
+            explainer={labels.firmness.explainer}
+          >
+            <SelectTabGroup
+              buttons={cervixFirmnessRadioProps}
+              active={this.state.firmness}
+              onSelect={val => this.setState({ firmness: val })}
+            />
+          </SymptomSection>
+          <SymptomSection
+            header="Position"
+            explainer={labels.position.explainer}
+          >
+            <SelectTabGroup
+              buttons={cervixPositionRadioProps}
+              active={this.state.position}
+              onSelect={val => this.setState({ position: val })}
+            />
+          </SymptomSection>
+          <SymptomSection
+            header="Exclude"
+            explainer="You can exclude this value if you don't want to use it for fertility detection"
+            inlineExplainer={true}
+          >
             <Switch
               onValueChange={(val) => {
                 this.setState({ exclude: val })
               }}
               value={this.state.exclude}
             />
-          </View>
+          </SymptomSection>
         </ScrollView>
         <ActionButtonFooter
           symptom='cervix'
diff --git a/components/cycle-day/symptoms/desire.js b/components/cycle-day/symptoms/desire.js
index 0802e6cc1caeb983303e4383db829b01779a5b00..93776030effcb4eb063d2fd14b1d8bf36e759adc 100644
--- a/components/cycle-day/symptoms/desire.js
+++ b/components/cycle-day/symptoms/desire.js
@@ -8,7 +8,7 @@ import { saveSymptom } from '../../../db'
 import { intensity, desire } from '../labels/labels'
 import ActionButtonFooter from './action-button-footer'
 import SelectTabGroup from '../select-tab-group'
-import { SymptomSectionHeader, AppText } from '../../app-text';
+import SymptomSection from './symptom-section'
 
 export default class Desire extends Component {
   constructor(props) {
@@ -31,13 +31,16 @@ export default class Desire extends Component {
     return (
       <View style={{ flex: 1 }}>
         <ScrollView style={styles.page}>
-          <SymptomSectionHeader>{desire.header}</SymptomSectionHeader>
-          <AppText>{desire.explainer}</AppText>
-          <SelectTabGroup
-            buttons={desireRadioProps}
-            acitve={this.state.currentValue}
-            onSelect={val => this.setState({ currentValue: val })}
-          />
+          <SymptomSection
+            header={desire.header}
+            explainer={desire.explainer}
+          >
+            <SelectTabGroup
+              buttons={desireRadioProps}
+              acitve={this.state.currentValue}
+              onSelect={val => this.setState({ currentValue: val })}
+            />
+          </SymptomSection>
         </ScrollView>
         <ActionButtonFooter
           symptom='desire'
diff --git a/components/cycle-day/symptoms/symptom-section.js b/components/cycle-day/symptoms/symptom-section.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1af4d77001b12acc6d265fba3cd3564a92fd9d3
--- /dev/null
+++ b/components/cycle-day/symptoms/symptom-section.js
@@ -0,0 +1,19 @@
+import React, { Component } from 'react'
+import { View } from 'react-native'
+import { SymptomSectionHeader, AppText } from '../../app-text'
+
+export default class SymptomSection extends Component {
+  render() {
+    return (
+      <View>
+        <SymptomSectionHeader>{this.props.header}</SymptomSectionHeader>
+        <View flexDirection={this.props.inlineExplainer ? 'row' : 'column'}>
+          <View flex={1}>
+            <AppText>{this.props.explainer}</AppText>
+          </View>
+          {this.props.children}
+        </View>
+      </View>
+    )
+  }
+}
\ No newline at end of file