diff --git a/src/main/java/writer2latex/xhtml/style/FrameStyleParser.java b/src/main/java/writer2latex/xhtml/style/FrameStyleParser.java
index 00ab630..b08d443 100644
--- a/src/main/java/writer2latex/xhtml/style/FrameStyleParser.java
+++ b/src/main/java/writer2latex/xhtml/style/FrameStyleParser.java
@@ -82,7 +82,7 @@ public class FrameStyleParser extends StyleWithPropertiesParser {
 			String declarationBlock = composeDeclarationBlock(displayName);
 			String selector = composeSelector(displayName);
 			if (!style.isAutomatic() && !selector.isEmpty() && !declarationBlock.isEmpty()) {
-				declaration = indent + selector + "{" + declarationBlock + "}" + (prettyPrint ? "\n" : " ");
+				declaration = cssToString(selector, declarationBlock);
 			}
 			return declaration;
 		}
diff --git a/src/main/java/writer2latex/xhtml/style/HeadingStyleParser.java b/src/main/java/writer2latex/xhtml/style/HeadingStyleParser.java
index 18d3fca..f18e426 100644
--- a/src/main/java/writer2latex/xhtml/style/HeadingStyleParser.java
+++ b/src/main/java/writer2latex/xhtml/style/HeadingStyleParser.java
@@ -64,38 +64,44 @@ public class HeadingStyleParser extends StyleParser {
 		for (int i = 1; i <= 6; i++) {
 			// Convert main style for this level
 			if (ofr.getHeadingStyle(i) != null) {
-				CSVList props = new CSVList(";");
-				getParSc().applyProperties(ofr.getHeadingStyle(i), props, true);
-				props.addValue("clear", "left");
-				result.append(indent);
-				result.append("h");
-				result.append(i);
-				result.append(" {");
-				result.append(props.toString());
-				result.append("}");
-				result.append(config.prettyPrint() ? "\n" : " ");
+				String selector = composeBasicSelector(i);
+				String declaration = composeBasicDeclarationBlock(i);
+				result.append(cssToString(selector, declaration));
 			}
 			// Convert other styles for this level
 			for (String sDisplayName : otherLevelStyles.get(i)) {
-				StyleWithProperties style = (StyleWithProperties) getStyles().getStyleByDisplayName(sDisplayName);
-				CSVList props = new CSVList(";");
-				getParSc().applyProperties(style, props, true);
-				props.addValue("clear", "left");
-				result.append(indent);
-				result.append("h");
-				result.append(i);
-				result.append(".");
-				styleNames.addName(sDisplayName);
-				result.append(styleNames.getName(sDisplayName));
-				result.append(" {");
-				result.append(props.toString());
-				result.append("}");
-				result.append(config.prettyPrint() ? "\n" : " ");
+				String selector = composeSelector(i, sDisplayName);
+				String declaration = composeDeclarationBlock( sDisplayName);
+				result.append(cssToString(selector, declaration));
 			}
 		}
 		return result.toString();
 	}
 
+	private String composeBasicSelector( int i) {
+		return "h" + i;
+	}
+
+	private String composeBasicDeclarationBlock( int i) {
+		CSVList props = new CSVList(";");
+		getParSc().applyProperties(ofr.getHeadingStyle(i), props, true);
+		props.addValue("clear", "left");
+		return props.toString();
+	}
+
+	private String composeSelector(int i, String sDisplayName) {
+		styleNames.addName(sDisplayName);
+		return "h" + i + "." + styleNames.getName(sDisplayName);
+	}
+
+	public String composeDeclarationBlock(String displayName) {
+		StyleWithProperties style = (StyleWithProperties) getStyles().getStyleByDisplayName(displayName);
+		CSVList props = new CSVList(";");
+		getParSc().applyProperties(style, props, true);
+		props.addValue("clear", "left");
+		return props.toString();
+	}
+
 	@Override
 	public OfficeStyleFamily getStyles() {
 		return ofr.getParStyles();
diff --git a/src/main/java/writer2latex/xhtml/style/ListStyleParser.java b/src/main/java/writer2latex/xhtml/style/ListStyleParser.java
index 166de53..2458edd 100644
--- a/src/main/java/writer2latex/xhtml/style/ListStyleParser.java
+++ b/src/main/java/writer2latex/xhtml/style/ListStyleParser.java
@@ -113,7 +113,7 @@ public class ListStyleParser extends StyleParser {
   				String selector = composeSelector(displayName, level);
   				String declarationBlock = composeDeclarationBlock(displayName, level);
   				if (!selector.isEmpty() && !declarationBlock.isEmpty()) {
-  					buf.append(indent + selector + " {" + declarationBlock + "}" + (prettyPrint ? "\n" : " "));	
+  					buf.append(cssToString(selector, declarationBlock));	
   				}
   			}
   		}
@@ -130,7 +130,7 @@ public class ListStyleParser extends StyleParser {
   					// Apply left margin and text indent to the paragraphs contained in
   					// the list
   				if (!declarationBlock.isEmpty() && !selector.isEmpty()) {
-  					buf.append(indent + selector + "{" + declarationBlock + "}" + (prettyPrint ? "\n" : " "));
+  					buf.append(cssToString(selector, declarationBlock));
   				}
   			}
   		}
diff --git a/src/main/java/writer2latex/xhtml/style/PageStyleParser.java b/src/main/java/writer2latex/xhtml/style/PageStyleParser.java
index 6298edd..c5b1212 100644
--- a/src/main/java/writer2latex/xhtml/style/PageStyleParser.java
+++ b/src/main/java/writer2latex/xhtml/style/PageStyleParser.java
@@ -160,7 +160,7 @@ public class PageStyleParser extends StyleParser {
 		getFrameSc().cssBackground(pageLayout, pageInfo.props, true);
 
 		if (pageInfo.hasAttributes()) {
-			buf.append(indent + "body {" + pageInfo.props.toString() + "}" + (prettyPrint ? "\n" : " "));
+			buf.append(indent + "body" + " {" + pageInfo.props.toString() + "}" + (prettyPrint ? "\n" : " "));
 		}
 
 		// Footnote rule
@@ -180,7 +180,7 @@ public class PageStyleParser extends StyleParser {
 			String declarationBlock = composeDeclarationBlock(displayName);
 			// Then export the results
 			if (!selector.isEmpty() && !declarationBlock.isEmpty()) {
-				declaration = indent + selector + " {" + declarationBlock + "}" + (prettyPrint ? "\n" : " ");
+				declaration = cssToString(selector, declarationBlock);
 			}
 			return declaration;
 		}
diff --git a/src/main/java/writer2latex/xhtml/style/StyleParser.java b/src/main/java/writer2latex/xhtml/style/StyleParser.java
index 69f5148..ce57308 100644
--- a/src/main/java/writer2latex/xhtml/style/StyleParser.java
+++ b/src/main/java/writer2latex/xhtml/style/StyleParser.java
@@ -124,5 +124,9 @@ public abstract class StyleParser extends Parser {
      *  @param sIndent a String of spaces to add before each line
      */
     public abstract String composeStyleDeclarations();	
+    
+    public String cssToString(String selector, String declarationBlock) {
+    	return indent + selector + " {" + declarationBlock + "}" + (prettyPrint ? "\n" : " ");
+    }
 
 }
diff --git a/src/main/java/writer2latex/xhtml/style/StyleWithPropertiesParser.java b/src/main/java/writer2latex/xhtml/style/StyleWithPropertiesParser.java
index 8ff8a2d..6b5ea70 100644
--- a/src/main/java/writer2latex/xhtml/style/StyleWithPropertiesParser.java
+++ b/src/main/java/writer2latex/xhtml/style/StyleWithPropertiesParser.java
@@ -114,7 +114,7 @@ public abstract class StyleWithPropertiesParser extends StyleParser {
 			String selector = composeSelector(displayName);
 			String declarationBlock = composeDeclarationBlock(displayName);
 			if (!style.isAutomatic() && !selector.isEmpty() && !declarationBlock.isEmpty()) {
-				declaration = indent + selector + " {" + declarationBlock + "}" + (prettyPrint ? "\n" : " ");
+				declaration = cssToString(selector, declarationBlock);
 				// TODO: Create a method "getStyleDeclarationsInner"
 				// to be used by eg. FrameStyleConverter
 			}