diff --git a/src/main/java/de/tla2b/output/ASTPrettyPrinter.java b/src/main/java/de/tla2b/output/ASTPrettyPrinter.java
index 5ad97b0e06348ea8a2ee6ff6a292f468332cca9b..a2cf80c51e889f69d55383e1b1c007ccbedd7eaf 100644
--- a/src/main/java/de/tla2b/output/ASTPrettyPrinter.java
+++ b/src/main/java/de/tla2b/output/ASTPrettyPrinter.java
@@ -6,8 +6,13 @@ import java.util.Iterator;
 import java.util.List;
 
 import de.be4.classicalb.core.parser.node.*;
+import de.be4.classicalb.core.parser.util.PrettyPrinter;
 import de.tla2b.util.ExtendedDFAdapter;
 
+/**
+ * @deprecated Use {@link PrettyPrinter} from the B parser library instead.
+ */
+@Deprecated
 public class ASTPrettyPrinter extends ExtendedDFAdapter {
 	private final StringBuilder sb = new StringBuilder();
 	private Renamer renamer;
@@ -726,6 +731,7 @@ public class ASTPrettyPrinter extends ExtendedDFAdapter {
 
 }
 
+@Deprecated
 class PrettyPrintNode {
 	private String begin = "";
 	private String beginList = "";
diff --git a/src/main/java/de/tla2b/output/Renamer.java b/src/main/java/de/tla2b/output/Renamer.java
index 1e768d72b0bbd9e5b53b0dcffbc04cf8fda14a0d..2f55f7e08098baea2521dc05b6ba657c618ce9db 100644
--- a/src/main/java/de/tla2b/output/Renamer.java
+++ b/src/main/java/de/tla2b/output/Renamer.java
@@ -4,13 +4,18 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Set;
 
-import de.be4.classicalb.core.parser.util.Utils;
 import de.be4.classicalb.core.parser.analysis.DepthFirstAdapter;
 import de.be4.classicalb.core.parser.node.AIdentifierExpression;
 import de.be4.classicalb.core.parser.node.Node;
 import de.be4.classicalb.core.parser.node.Start;
 import de.be4.classicalb.core.parser.node.TIdentifierLiteral;
+import de.be4.classicalb.core.parser.util.SuffixIdentifierRenaming;
+import de.be4.classicalb.core.parser.util.Utils;
 
+/**
+ * @deprecated Use {@link SuffixIdentifierRenaming} from the B parser library instead.
+ */
+@Deprecated
 public class Renamer extends DepthFirstAdapter {
 
 	private final HashMap<Node, String> namesTables;
diff --git a/src/main/java/de/tla2bAst/Translator.java b/src/main/java/de/tla2bAst/Translator.java
index df6ee7126e8580779e203c0835ebc3cb6ac15d99..ef24f2dcf19afef273a624c72ec00fde5796af86 100644
--- a/src/main/java/de/tla2bAst/Translator.java
+++ b/src/main/java/de/tla2bAst/Translator.java
@@ -20,6 +20,8 @@ import de.be4.classicalb.core.parser.exceptions.BCompoundException;
 import de.be4.classicalb.core.parser.exceptions.PreParseException;
 import de.be4.classicalb.core.parser.node.Node;
 import de.be4.classicalb.core.parser.node.Start;
+import de.be4.classicalb.core.parser.util.PrettyPrinter;
+import de.be4.classicalb.core.parser.util.SuffixIdentifierRenaming;
 import de.tla2b.analysis.InstanceTransformation;
 import de.tla2b.analysis.PredicateVsExpression;
 import de.tla2b.analysis.SpecAnalyser;
@@ -32,17 +34,18 @@ import de.tla2b.config.ModuleOverrider;
 import de.tla2b.exceptions.FrontEndException;
 import de.tla2b.exceptions.TLA2BException;
 import de.tla2b.global.TranslationGlobals;
-import de.tla2b.output.ASTPrettyPrinter;
 import de.tla2b.output.PrologPrinter;
-import de.tla2b.output.Renamer;
 import de.tla2b.translation.BMacroHandler;
 import de.tla2b.translation.RecursiveFunctionHandler;
 import de.tla2b.types.TLAType;
 import de.tla2b.util.FileUtils;
+
 import tla2sany.drivers.SANY;
 import tla2sany.modanalyzer.SpecObj;
 import tla2sany.semantic.ModuleNode;
+
 import tlc2.tool.ModelConfig;
+
 import util.ToolIO;
 
 public class Translator implements TranslationGlobals {
@@ -100,10 +103,10 @@ public class Translator implements TranslationGlobals {
 			throws TLA2BException {
 		Translator translator = new Translator(moduleName, moduleString, configString);
 		Start bAST = translator.getBAST();
-		Renamer renamer = new Renamer(bAST);
-		ASTPrettyPrinter aP = new ASTPrettyPrinter(bAST, renamer);
-		bAST.apply(aP);
-		return aP.getResultString();
+		PrettyPrinter pp = new PrettyPrinter();
+		pp.setRenaming(new SuffixIdentifierRenaming());
+		bAST.apply(pp);
+		return pp.getPrettyPrint();
 	}
 
 	public Translator(String moduleName, String moduleString, String configString) throws TLA2BException {
@@ -317,16 +320,15 @@ public class Translator implements TranslationGlobals {
 			System.exit(-1);
 		}
 
-		Renamer renamer = new Renamer(BAst);
-		ASTPrettyPrinter aP = new ASTPrettyPrinter(BAst, renamer);
-		BAst.apply(aP);
-		StringBuilder result = aP.getResultAsStringbuilder();
-		result.insert(0, "/*@ generated by TLA2B " + VERSION_NUMBER + " " + new Date() + " */\n");
+		PrettyPrinter pp = new PrettyPrinter();
+		pp.setRenaming(new SuffixIdentifierRenaming());
+		BAst.apply(pp);
+		String result = "/*@ generated by TLA2B " + VERSION_NUMBER + " " + new Date() + " */\n" + pp.getPrettyPrint();
 
 		try {
 			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(machineFile), "UTF-8"));
 			try {
-				out.write(result.toString());
+				out.write(result);
 			} finally {
 				out.close();
 			}
diff --git a/src/test/java/de/tla2b/util/TestUtil.java b/src/test/java/de/tla2b/util/TestUtil.java
index 40078282bd2d55665a746a076c8a7a3bf7139de8..4ba66b456802949249d83c2af974c1b911e59e50 100644
--- a/src/test/java/de/tla2b/util/TestUtil.java
+++ b/src/test/java/de/tla2b/util/TestUtil.java
@@ -5,10 +5,10 @@ import de.be4.classicalb.core.parser.analysis.prolog.ASTProlog;
 import de.be4.classicalb.core.parser.exceptions.BCompoundException;
 import de.be4.classicalb.core.parser.node.Node;
 import de.be4.classicalb.core.parser.node.Start;
+import de.be4.classicalb.core.parser.util.PrettyPrinter;
+import de.be4.classicalb.core.parser.util.SuffixIdentifierRenaming;
 import de.prob.prolog.output.PrologTermStringOutput;
 import de.tla2b.exceptions.TLA2BException;
-import de.tla2b.output.ASTPrettyPrinter;
-import de.tla2b.output.Renamer;
 import de.tla2bAst.Translator;
 
 import util.FileUtil;
@@ -27,10 +27,12 @@ public class TestUtil {
 		Translator t = new Translator(tlaFile);
 		Start start = t.translate();
 
-		ASTPrettyPrinter aP = new ASTPrettyPrinter(start);
-		start.apply(aP);
+		PrettyPrinter pp = new PrettyPrinter();
+		// FIXME Is it intentional that we don't use SuffixIdentifierRenaming here?
+		start.apply(pp);
+		System.out.println(pp.getPrettyPrint());
 		final BParser parser = new BParser("testcase");
-		final Start ppStart = parser.parse(aP.getResultString(), false);
+		final Start ppStart = parser.parse(pp.getPrettyPrint(), false);
 
 		String result = getTreeAsString(start);
 		String ppResult = getTreeAsString(ppStart);
@@ -43,11 +45,11 @@ public class TestUtil {
 		ToolIO.setMode(ToolIO.TOOL);
 		ToolIO.reset();
 		Start resultNode = Translator.translateTlaExpression(tlaExpr);
-		Renamer renamer = new Renamer(resultNode);
-		ASTPrettyPrinter aP = new ASTPrettyPrinter(resultNode, renamer);
-		resultNode.apply(aP);
+		PrettyPrinter pp = new PrettyPrinter();
+		pp.setRenaming(new SuffixIdentifierRenaming());
+		resultNode.apply(pp);
 		String bAstString = getAstStringofBExpressionString(bExpr);
-		String result = getAstStringofBExpressionString(aP.getResultString());
+		String result = getAstStringofBExpressionString(pp.getPrettyPrint());
 		// String tlaAstString = getTreeAsString(resultNode);
 		assertEquals(bAstString, result);
 	}
@@ -56,11 +58,11 @@ public class TestUtil {
 		Translator trans = new Translator(moduleString, null);
 		trans.translate();
 		Start resultNode = trans.translateExpression(tlaExpr);
-		Renamer renamer = new Renamer(resultNode);
-		ASTPrettyPrinter aP = new ASTPrettyPrinter(resultNode, renamer);
-		resultNode.apply(aP);
+		PrettyPrinter pp = new PrettyPrinter();
+		pp.setRenaming(new SuffixIdentifierRenaming());
+		resultNode.apply(pp);
 		String bAstString = getAstStringofBExpressionString(bExpr);
-		String result = getAstStringofBExpressionString(aP.getResultString());
+		String result = getAstStringofBExpressionString(pp.getPrettyPrint());
 		assertEquals(bAstString, result);
 	}
 
@@ -94,11 +96,11 @@ public class TestUtil {
 	public static void renamerTest(String tlaFile) throws BCompoundException, TLA2BException {
 		Translator t = new Translator(tlaFile);
 		Start start = t.translate();
-		Renamer renamer = new Renamer(start);
-		ASTPrettyPrinter aP = new ASTPrettyPrinter(start, renamer);
-		start.apply(aP);
+		PrettyPrinter pp = new PrettyPrinter();
+		pp.setRenaming(new SuffixIdentifierRenaming());
+		start.apply(pp);
 		final BParser parser = new BParser("testcase");
-		parser.parse(aP.getResultString(), false);
+		parser.parse(pp.getPrettyPrint(), false);
 	}
 
 	public static TestTypeChecker typeCheckString(String moduleString) throws TLA2BException {
diff --git a/src/test/java/testing/ExampleFilesTest.java b/src/test/java/testing/ExampleFilesTest.java
index 241befa6c62271cde994fd64582c3ee0146c91a0..ad2dfc1c3b545b6039855343be802052b910548d 100644
--- a/src/test/java/testing/ExampleFilesTest.java
+++ b/src/test/java/testing/ExampleFilesTest.java
@@ -3,19 +3,20 @@ package testing;
 import java.io.File;
 import java.util.ArrayList;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
 import de.be4.classicalb.core.parser.BParser;
 import de.be4.classicalb.core.parser.node.Start;
-import de.tla2b.output.ASTPrettyPrinter;
+import de.be4.classicalb.core.parser.util.PrettyPrinter;
 import de.tla2b.util.AbstractParseModuleTest;
 import de.tla2b.util.FileUtils;
 import de.tla2b.util.PolySuite;
-import de.tla2b.util.TestUtil;
 import de.tla2b.util.PolySuite.Config;
 import de.tla2b.util.PolySuite.Configuration;
+import de.tla2b.util.TestUtil;
 import de.tla2bAst.Translator;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
 import static org.junit.Assert.assertEquals;
 
 @RunWith(PolySuite.class)
@@ -35,12 +36,13 @@ public class ExampleFilesTest extends AbstractParseModuleTest {
 		Start start = t.translate();
 		String resultTree = TestUtil.getTreeAsString(start);
 		
-		ASTPrettyPrinter aP = new ASTPrettyPrinter(start);
-		start.apply(aP);
+		PrettyPrinter pp = new PrettyPrinter();
+		// FIXME Is it intentional that we don't use SuffixIdentifierRenaming here?
+		start.apply(pp);
 
 		// parse pretty print result
 		final BParser parser = new BParser("testcase");
-		final Start ppStart = parser.parse(aP.getResultString(), false);
+		final Start ppStart = parser.parse(pp.getPrettyPrint(), false);
 		String ppTree = TestUtil.getTreeAsString(ppStart);
 		
 		// comparing result with pretty print