diff --git a/alib2cli/src/ast/statements/StatementList.cpp b/alib2cli/src/ast/statements/StatementList.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ffbb93912433101c06dd86aa5f372d7106b9085f
--- /dev/null
+++ b/alib2cli/src/ast/statements/StatementList.cpp
@@ -0,0 +1,23 @@
+#include <ast/statements/StatementList.h>
+
+namespace cli {
+
+StatementList::StatementList ( ext::vector < std::shared_ptr < Statement > > statements ) : m_statements ( std::move ( statements ) ) {
+}
+
+std::shared_ptr < abstraction::Value > StatementList::translateAndEval ( const std::shared_ptr < abstraction::Value > &, Environment & environment ) const {
+	if ( m_statements.empty ( ) )
+		throw std::invalid_argument ( "Statement list can't be empty" );
+
+	std::shared_ptr < abstraction::Value > next = m_statements [ 0 ]->translateAndEval ( nullptr, environment );
+	for ( size_t i = 1; i < m_statements.size ( ); ++ i )
+		next = m_statements [ i ]->translateAndEval ( next, environment );
+
+	return next;
+}
+
+void StatementList::append ( std::shared_ptr < Statement > statement ) {
+	m_statements.emplace_back ( std::move ( statement ) );
+}
+
+} /* namespace cli */
diff --git a/alib2cli/src/ast/statements/StatementList.h b/alib2cli/src/ast/statements/StatementList.h
index f1d17824459ca992ec30201eebe645777d2b42ea..74bf355ffaf4f16b36b14f7382b80750959d6c79 100644
--- a/alib2cli/src/ast/statements/StatementList.h
+++ b/alib2cli/src/ast/statements/StatementList.h
@@ -8,25 +8,12 @@ class StatementList final : public Statement {
 	ext::vector < std::shared_ptr < Statement > > m_statements;
 
 public:
-	StatementList ( ext::vector < std::shared_ptr < Statement > > statements ) : m_statements ( std::move ( statements ) ) {
-	}
+	StatementList ( ext::vector < std::shared_ptr < Statement > > statements );
 
-	std::shared_ptr < abstraction::Value > translateAndEval ( const std::shared_ptr < abstraction::Value > &, Environment & environment ) const override {
-		if ( m_statements.empty ( ) )
-			throw std::invalid_argument ( "Statement list can't be empty" );
+	std::shared_ptr < abstraction::Value > translateAndEval ( const std::shared_ptr < abstraction::Value > &, Environment & environment ) const override;
 
-		std::shared_ptr < abstraction::Value > next = m_statements [ 0 ]->translateAndEval ( nullptr, environment );
-		for ( size_t i = 1; i < m_statements.size ( ); ++ i )
-			next = m_statements [ i ]->translateAndEval ( next, environment );
-
-		return next;
-	}
-
-	void append ( std::shared_ptr < Statement > statement ) {
-		m_statements.emplace_back ( std::move ( statement ) );
-	}
+	void append ( std::shared_ptr < Statement > statement );
 
 };
 
 } /* namespace cli */
-