diff --git a/design/configuration-class-diagram.puml b/design/configuration-class-diagram.puml
new file mode 100644
index 0000000000000000000000000000000000000000..7e8791eb6d0787b9940218c55571a7480afb4894
--- /dev/null
+++ b/design/configuration-class-diagram.puml
@@ -0,0 +1,103 @@
+' Copyright 2013-2014 CS Systèmes d'Information
+' Licensed to CS Systèmes d'Information (CS) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' CS licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'   http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB/CCC9C5
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package orekit #ECEBD8 {
+    class OneAxisEllipsoid
+    class Frame
+    class PVCoordinatesProvider
+    class AttitudeProvider
+  }
+
+  package rugged #ECEBD8 {
+
+    package utils #DDEBD8 {
+
+      class ExtendedEllipsoid
+      class SpacecraftToObservedBody
+
+      OneAxisEllipsoid          <|-- ExtendedEllipsoid
+      Frame                 "2" <--o SpacecraftToObservedBody
+      PVCoordinatesProvider "1" <--o SpacecraftToObservedBody
+      AttitudeProvider      "1" <--o SpacecraftToObservedBody
+
+    }
+
+    package api #DDEBD8 {
+      enum AlgorithmId {
+        +DUVENHAGE
+        +DUVENHAGE_FLAT_BODY
+        +BASIC_SCAN
+        +IGNORE_DEM
+      }
+      enum EllipsoidId {
+        +GRS80
+        +WGS84
+        +IERS96
+        +IERS2003
+      }
+      enum BodyRotatingFrameId {
+        +ITRF
+        +ITRF_EQUINOX
+        +GTOD
+      }
+      enum InertialFrameId {
+        +GCRF
+        +EME2000
+        +MOD
+        +TOD
+        +VEIS1950
+      }
+      class Rugged {
+        +setLightTimeCorrection(boolean)
+        +setAberrationOfLightCorrection(boolean)
+        +addLineSensor(lineSensor)
+      }
+      class LineSensor
+      ExtendedEllipsoid        "1" <--o Rugged
+      SpacecraftToObservedBody "1" <--o Rugged
+      Rugged o--> "*" LineSensor 
+    }
+
+  }
+
+  package mission.specific #C4D2C5 {
+    class UserMain #D5E0D5/E2EBE2
+    AlgorithmId         <-- UserMain : selects
+    EllipsoidId         <-- UserMain : selects
+    BodyRotatingFrameId <-- UserMain : selects
+    InertialFrameId     <-- UserMain : selects
+    LineSensor          <-- UserMain : creates
+    Rugged              <-- UserMain : configures
+    note as N1 #E2EBE2
+      user configures Rugged either by
+      selecting from a few predefined
+      choices or by directly building
+      Orekit objects
+    end note
+  }
+
+@enduml
diff --git a/design/direct-localization-class-diagram.puml b/design/direct-localization-class-diagram.puml
new file mode 100644
index 0000000000000000000000000000000000000000..ee2306942c76adbfaff86b5f14d2721e868a4124
--- /dev/null
+++ b/design/direct-localization-class-diagram.puml
@@ -0,0 +1,76 @@
+' Copyright 2013-2014 CS Systèmes d'Information
+' Licensed to CS Systèmes d'Information (CS) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' CS licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'   http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB/CCC9C5
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package rugged #ECEBD8 {
+
+    package raster #DDEBD8 {
+      interface Tile {
+        +interpolateElevation(φ, λ)
+        +pixelIntersection(geodeticPoint, los, φ index, λ index)
+      }
+    }
+
+    package intersection #DDEBD8 {
+      interface IntersectionAlgorithm {
+        +intersection(ellipsoid, position, los)
+        +refineIntersection(ellipsoid, position, los, closeGuess)
+      }
+      Tile <-- IntersectionAlgorithm : compute elevation
+    }
+
+    package utils #DDEBD8 {
+
+      class ExtendedEllipsoid {
+        +pointAtLatitude(position, los, φ, closereference)
+        +pointAtLongitude(position, los, λ)
+        +pointAtAltitude(position, los, h)
+        +pointOnGround(position, los)
+      }
+      class SpacecraftToObservedBody
+      IntersectionAlgorithm --> ExtendedEllipsoid : find DEM tiles boundaries
+    }
+
+    package api #DDEBD8 {
+      class Rugged {
+        +directLocalization(sensorName, line)
+      }
+      class LineSensor
+      IntersectionAlgorithm "1" <--o Rugged : delegate DEM intersection
+      ExtendedEllipsoid <-- Rugged : convert geodetic points
+      Rugged --> LineSensor : getLOS(pixel)
+      Rugged --> LineSensor : getDate(line)
+      SpacecraftToObservedBody <-- Rugged : convert positions/directions
+    }
+
+  }
+
+  package mission.specific #C4D2C5 {
+    class UserMain #D5E0D5/E2EBE2
+    Rugged              <-- UserMain
+  }
+
+@enduml