diff --git a/alib2cli/src/ast/statements/ResultPrintStatement.h b/alib2cli/src/ast/statements/ResultPrintStatement.h
index 187ce67bf5bced86c982f18920706637e7175e4c..fe30f6f453323a78b7af5f9b6e8d228c860da630 100644
--- a/alib2cli/src/ast/statements/ResultPrintStatement.h
+++ b/alib2cli/src/ast/statements/ResultPrintStatement.h
@@ -12,6 +12,10 @@ public:
 
 	virtual std::shared_ptr < abstraction::OperationAbstraction > translateAndEval ( const std::shared_ptr < abstraction::OperationAbstraction > & prev, Environment & ) const override {
 		std::shared_ptr < abstraction::OperationAbstraction > res = abstraction::Registry::getValuePrinterAbstraction ( prev->getReturnType ( ) );
+
+		if ( res->numberOfParams ( ) == 0 )
+			return res;
+
 		if ( ! res->attachInput ( prev, 0, false ) )
 			throw exception::CommonException ( "Can't connect param at 0 of result print statement with result of type " + prev->getReturnType ( ) + "." );
 		if ( ! res->eval ( ) )
diff --git a/alib2common/src/abstraction/NaryOperationAbstraction.hpp b/alib2common/src/abstraction/NaryOperationAbstraction.hpp
index 16e5dbaee30e537b5db608be549e74b1a680afc2..49bcce19644998a63323d3efaf199e9750988a13 100644
--- a/alib2common/src/abstraction/NaryOperationAbstraction.hpp
+++ b/alib2common/src/abstraction/NaryOperationAbstraction.hpp
@@ -23,6 +23,9 @@ protected:
 
 private:
 	virtual bool attachInput ( const std::shared_ptr < OperationAbstraction > & input, unsigned index, bool move ) override {
+		if ( index >= m_moves.size ( ) )
+			throw exception::CommonException ( "Parameter index out of bounds.");
+
 		m_moves [ index ] = move;
 
 		auto attachCallback = [ & ] ( auto & param ) {
@@ -37,16 +40,21 @@ private:
 				return false;
 			}
 		};
+
 		return ext::call_on_nth < bool > ( m_params, index, attachCallback );
 	}
 
 	virtual bool detachInput ( unsigned index ) override {
+		if ( index >= m_moves.size ( ) )
+			throw exception::CommonException ( "Parameter index out of bounds.");
+
 		m_moves [ index ] = false;
 
 		auto detachCallback = [ & ] ( auto & param ) {
 			param = nullptr;
 			return true;
 		};
+
 		return ext::call_on_nth < bool > ( m_params, index, detachCallback );
 	}
 
diff --git a/alib2common/src/abstraction/PrimitiveRegistrator.cpp b/alib2common/src/abstraction/PrimitiveRegistrator.cpp
index 97974e243b066f3e6ef2c8e3db69b8cb1149a8d1..ad4be3902dd059aec097ff277d57478e18d32e30 100644
--- a/alib2common/src/abstraction/PrimitiveRegistrator.cpp
+++ b/alib2common/src/abstraction/PrimitiveRegistrator.cpp
@@ -43,6 +43,7 @@ public:
 		abstraction::ValuePrinterRegistry::registerValuePrinter < int > ( );
 		abstraction::ValuePrinterRegistry::registerValuePrinter < double > ( );
 		abstraction::ValuePrinterRegistry::registerValuePrinter < std::string > ( );
+		abstraction::ValuePrinterRegistry::registerValuePrinter < void > ( );
 
 		abstraction::ImmediateRegistry::registerImmediate < int > ( );
 		abstraction::ImmediateRegistry::registerImmediate < std::string > ( );
diff --git a/alib2common/src/abstraction/ValuePrinterAbstraction.hpp b/alib2common/src/abstraction/ValuePrinterAbstraction.hpp
index e70abb33dbe2805aa6a9c30376d79ee78fc2ccde..24c0c28300f2a6c6aa3d1ff6850923329736c3c2 100644
--- a/alib2common/src/abstraction/ValuePrinterAbstraction.hpp
+++ b/alib2common/src/abstraction/ValuePrinterAbstraction.hpp
@@ -9,6 +9,7 @@
 #define _VALUE_PRINTER_ABSTRACTION_HPP_
 
 #include <abstraction/UnaryOperationAbstraction.hpp>
+#include <abstraction/NullaryOperationAbstraction.hpp>
 #include <tuple>
 
 namespace abstraction {
@@ -25,6 +26,14 @@ public:
 	}
 };
 
+template < >
+class ValuePrinterAbstraction < void > : public NullaryOperationAbstraction < void > {
+public:
+	virtual bool run ( ) override {
+		return true;
+	}
+};
+
 } /* namespace abstraction */
 
 #endif /* _VALUE_PRINTER_ABSTRACTION_HPP_ */
diff --git a/alib2common/src/abstraction/ValuePrinterRegistry.cpp b/alib2common/src/abstraction/ValuePrinterRegistry.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..39e39fc57965b4d3e46a821af6626a0a6fa7b08c
--- /dev/null
+++ b/alib2common/src/abstraction/ValuePrinterRegistry.cpp
@@ -0,0 +1,17 @@
+/*
+ * ValuePrinterRegistry.cpp
+ *
+ *  Created on: 21. 7. 2017
+ *	  Author: Jan Travnicek
+ */
+
+#include <abstraction/ValuePrinterRegistry.hpp>
+
+namespace abstraction {
+
+template < >
+std::shared_ptr < abstraction::OperationAbstraction > ValuePrinterRegistry::EntryImpl < void >::getAbstraction ( ) const {
+	return std::make_shared < abstraction::ValuePrinterAbstraction < void > > ( );
+}
+
+} /* namespace abstraction */
diff --git a/alib2common/src/abstraction/ValuePrinterRegistry.hpp b/alib2common/src/abstraction/ValuePrinterRegistry.hpp
index f1ef0ae91e4ed45523e5d9ad9f6196d17b3cc587..92b4f370ad3eba18ffa5b75a41a8dc305b046163 100644
--- a/alib2common/src/abstraction/ValuePrinterRegistry.hpp
+++ b/alib2common/src/abstraction/ValuePrinterRegistry.hpp
@@ -69,6 +69,9 @@ std::shared_ptr < abstraction::OperationAbstraction > ValuePrinterRegistry::Entr
 	return std::make_shared < abstraction::ValuePrinterAbstraction < const Param & > > ( );
 }
 
+template < >
+std::shared_ptr < abstraction::OperationAbstraction > ValuePrinterRegistry::EntryImpl < void >::getAbstraction ( ) const;
+
 } /* namespace abstraction */
 
 #endif /* _VALUE_PRINTER_REGISTRY_HPP_ */