diff --git a/modules/seq/base/tests/CMakeLists.txt b/modules/seq/base/tests/CMakeLists.txt
index bb96ec008c5d896c8c1ee1f5db3f8a3b9cc018e4..df7a2d6f463956088f9a4557a6b2f3cb124f6c57 100644
--- a/modules/seq/base/tests/CMakeLists.txt
+++ b/modules/seq/base/tests/CMakeLists.txt
@@ -1,5 +1,6 @@
 set(OST_SEQ_UNIT_TESTS
   test_sequence.cc
+  test_aligned_region.cc
   test_alignment.cc
   tests.cc
 )
diff --git a/modules/seq/base/tests/test_aligned_region.cc b/modules/seq/base/tests/test_aligned_region.cc
new file mode 100644
index 0000000000000000000000000000000000000000..93acaf4aa7c4f0034130aa4aab25264dfb2a8956
--- /dev/null
+++ b/modules/seq/base/tests/test_aligned_region.cc
@@ -0,0 +1,157 @@
+//------------------------------------------------------------------------------
+// This file is part of the OpenStructure project <www.openstructure.org>
+//
+// Copyright (C) 2008-2010 by the OpenStructure authors
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License as published by the Free
+// Software Foundation; either version 3.0 of the License, or (at your option)
+// any later version.
+// This library is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+// details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with this library; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//------------------------------------------------------------------------------
+#define BOOST_TEST_DYN_LINK
+#include <boost/test/unit_test.hpp>
+
+#include <ost/mol/mol.hh>
+
+#include <ost/invalid_handle.hh>
+#include <ost/integrity_error.hh>
+
+#include <ost/mol/mol.hh>
+#include <ost/seq/alignment_handle.hh>
+#include <ost/seq/aligned_region.hh>
+#include <ost/seq/sequence_handle.hh>
+#include <ost/seq/sequence_list.hh>
+#include <ost/seq/impl/sequence_list_impl.hh>
+#include <ost/seq/impl/sequence_impl.hh>
+#include <ost/seq/sequence_list.hh>
+
+using namespace ost;
+using namespace ost::seq;
+using namespace ost::mol;
+
+
+BOOST_AUTO_TEST_SUITE( aligned_region )
+
+BOOST_AUTO_TEST_CASE(aligned_region_triv)
+{
+  AlignmentHandle a = CreateAlignment();
+  SequenceHandle seq1 = CreateSequence("S1","ab-cdef");
+  SequenceHandle seq2 = CreateSequence("S2","ghijk-l");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  AlignedRegion ar = AlignedRegion(a,0,2,1);
+  BOOST_CHECK(ar.GetAlignmentHandle()==a);
+  BOOST_CHECK_EQUAL(ar.GetStart(),0);
+  BOOST_CHECK_EQUAL(ar.GetEnd(),2);
+  BOOST_CHECK_EQUAL(ar.GetLength(),2);
+  BOOST_CHECK_EQUAL(ar.GetMaster(),1);
+  ar.SetMaster(0);
+  BOOST_CHECK_EQUAL(ar.GetMaster(),0);
+  ar.SetMaster(-1);
+  BOOST_CHECK_EQUAL(ar.GetMaster(),-1);
+  BOOST_CHECK_THROW(ar.SetMaster(2),IntegrityError);
+  BOOST_CHECK_THROW(ar.SetMaster(-2),IntegrityError);
+
+  AlignedRegion ar_same = a.MakeRegion(0,2);
+  BOOST_CHECK(ar==ar_same);
+}
+
+BOOST_AUTO_TEST_CASE(aligned_region_delete)
+{
+  AlignmentHandle a = CreateAlignment();
+  SequenceHandle seq1 = CreateSequence("S1","ab-cdef");
+  SequenceHandle seq2 = CreateSequence("S2","ghijk-l");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  AlignedRegion ar = a.MakeRegion(1,2);
+  ar.Delete();
+  BOOST_CHECK_EQUAL(a.GetSequence(0).GetString(),"acdef");
+  BOOST_CHECK_EQUAL(a.GetSequence(1).GetString(),"gjk-l");
+
+  a = CreateAlignment();
+  seq1 = CreateSequence("S1","ab-cdef");
+  seq2 = CreateSequence("S2","ghijk-l");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  ar = a.MakeRegion(0,7);
+  ar.Delete();
+  BOOST_CHECK_EQUAL(a.GetSequence(0).GetString(),"");
+  BOOST_CHECK_EQUAL(a.GetSequence(1).GetString(),"");
+
+  a = CreateAlignment();
+  seq1 = CreateSequence("S1","ab-cdef");
+  seq2 = CreateSequence("S2","ghijk-l");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  ar = a.MakeRegion(0,0);
+  ar.Delete();
+  BOOST_CHECK_EQUAL(a.GetSequence(0).GetString(),"ab-cdef");
+  BOOST_CHECK_EQUAL(a.GetSequence(1).GetString(),"ghijk-l");
+}
+
+BOOST_AUTO_TEST_CASE(aligned_region_replace)
+{
+  AlignmentHandle a1 = CreateAlignment();
+  SequenceHandle seq11 = CreateSequence("S1","ab-cdef");
+  SequenceHandle seq12 = CreateSequence("S2","ghijk-l");
+  a1.AddSequence(seq11);
+  a1.AddSequence(seq12);
+  AlignedRegion ar1 = a1.MakeRegion(1,2);
+
+  AlignmentHandle a2 = CreateAlignment();
+  SequenceHandle seq21 = CreateSequence("S1","zzzzzzz");
+  SequenceHandle seq22 = CreateSequence("S2","ee-----");
+  a2.AddSequence(seq21);
+  a2.AddSequence(seq22);
+  AlignedRegion ar2 = a2.MakeRegion(1,2);
+
+  ar1.Replace(ar2);
+  BOOST_CHECK_EQUAL(a1.GetSequence(0).GetString(),"azzcdef");
+  BOOST_CHECK_EQUAL(a1.GetSequence(1).GetString(),"ge-jk-l");
+
+}
+
+BOOST_AUTO_TEST_CASE(aligned_region_shift)
+{
+  AlignmentHandle a = CreateAlignment();
+  SequenceHandle seq1 = CreateSequence("S1","ab-c");
+  SequenceHandle seq2 = CreateSequence("S2","ghij");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  AlignedRegion ar = a.MakeRegion(1,2);
+
+  BOOST_CHECK_NO_THROW(ar.ShiftLeft(1));
+  BOOST_CHECK_EQUAL(ar.GetStart(),0);
+  BOOST_CHECK_EQUAL(ar.GetEnd(),2);
+  BOOST_CHECK_EQUAL(ar.GetLength(),2);
+  BOOST_CHECK_EQUAL(a.GetSequence(0).GetString(),"b-ac");
+  BOOST_CHECK_EQUAL(a.GetSequence(1).GetString(),"higj");
+  BOOST_CHECK_NO_THROW(ar.ShiftLeft(0));
+  BOOST_CHECK_EQUAL(a.GetSequence(0).GetString(),"b-ac");
+  BOOST_CHECK_EQUAL(a.GetSequence(1).GetString(),"higj");
+
+  BOOST_CHECK_THROW(ar.ShiftLeft(1),IntegrityError);
+
+  BOOST_CHECK_NO_THROW(ar.ShiftRight(2));
+  BOOST_CHECK_EQUAL(ar.GetStart(),2);
+  BOOST_CHECK_EQUAL(ar.GetEnd(),4);
+  BOOST_CHECK_EQUAL(ar.GetLength(),2);
+  BOOST_CHECK_EQUAL(a.GetSequence(0).GetString(),"acb-");
+  BOOST_CHECK_EQUAL(a.GetSequence(1).GetString(),"gjhi");
+
+  BOOST_CHECK_NO_THROW(ar.ShiftRight(0));
+  BOOST_CHECK_EQUAL(a.GetSequence(0).GetString(),"acb-");
+  BOOST_CHECK_EQUAL(a.GetSequence(1).GetString(),"gjhi");
+
+  BOOST_CHECK_THROW(ar.ShiftRight(1),IntegrityError);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/modules/seq/base/tests/test_alignment.cc b/modules/seq/base/tests/test_alignment.cc
index f8fef7fb6f1fd8c5f2d354c8922f081c6e030196..260ea5c235a27b3977731f7dab778c27d915b5ec 100644
--- a/modules/seq/base/tests/test_alignment.cc
+++ b/modules/seq/base/tests/test_alignment.cc
@@ -208,7 +208,7 @@ BOOST_AUTO_TEST_CASE(alignment_aligned_region)
   SequenceHandle seq2 = CreateSequence("S2","ghijkl");
   a.AddSequence(seq1);
   a.AddSequence(seq2);
-  AlignedRegion ar = a.MakeRegion(1,2,0);
+  AlignedRegion ar = a.MakeRegion(1,2);
   BOOST_CHECK_EQUAL(ar.GetLength(),2);
   BOOST_CHECK_EQUAL(ar.GetStart(),1);
   BOOST_CHECK_EQUAL(ar.GetEnd(),3);