diff --git a/design/parametric-los-class-diagram.puml b/design/parametric-los-class-diagram.puml
new file mode 100644
index 0000000000000000000000000000000000000000..75dcb95ca61830de1f86094da109baa26927e168
--- /dev/null
+++ b/design/parametric-los-class-diagram.puml
@@ -0,0 +1,97 @@
+' Copyright 2013-2015 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 org.orekit.rugged #ECEBD8 {
+
+    package utils #DDEBD8 {
+      interface ParametricModel {
+         +getNbEstimatedParameters()
+         +getEstimatedParameters(parameters, start, length)
+        +setEstimatedParameters(parameters, start, length)
+      }
+      enum ParameterType {
+        +FIXED
+        +ESTIMATED
+      }
+    }
+
+    package linesensor #DDEBD8 {
+      class LineSensor
+    }
+
+    package los #DDEBD8 {
+
+      interface TimeDependentLOS {
+        +getNbPixels()
+        +getLOS(index, date)
+        +getLOS(index, date, parameters)
+      }
+
+      interface LOSTransform {
+        +transformLOS(i, los, date)
+      }
+
+      interface TimeIndependentLOSTransform {
+        +transformLOS(i, los)
+      }
+ 
+
+      class LOSBuilder {
+        +LOSBuilder(List<Vector3D> rawLOS)
+        +LOSBuilder addTransform(TimeIndependentLOSTransform transform)
+        +LOSBuilder addTransform(LOSTransform transform)
+        +TimeDependentLOS build()
+      }
+
+      ParametricModel             <|.. TimeDependentLOS
+      ParametricModel             <|.. LOSTransform
+      ParametricModel             <|.. TimeIndependentLOSTransform
+      PolynomialRotation          --|> LOSTransform
+      ParameterType               <--*  PolynomialRotation
+      FixedRotation               --|> TimeIndependentLOSTransform
+      ParameterType               <--*  FixedRotation
+      TimeDependentLOS            <--  LOSBuilder : builds
+      TimeIndependentLOSTransform <--  LOSBuilder : combines
+      LOSTransform                <--  LOSBuilder : combines
+
+      LineSensor                  "1" *--> TimeDependentLOS
+
+    }
+
+  }
+
+  package o.a.c.m.analysis.differentiation #C4D2C5 {
+    class DerivativeStructure #D5E0D5/E2EBE2 {
+      +getOrder()
+      +getValue()
+      +getPartialDerivatives(order1, order2, ...)
+    }
+    LOSTransform --> DerivativeStructure
+    TimeIndependentLOSTransform --> DerivativeStructure
+  }
+
+@enduml