diff --git a/examples/Apollo11_soils.py b/examples/Apollo11_soils.py
index 4a409244496fa9dbc628a733ab65418d51733d6f..9939bce0034f9bdf85a05c4ab5b09885899ea61c 100644
--- a/examples/Apollo11_soils.py
+++ b/examples/Apollo11_soils.py
@@ -1,4 +1,48 @@
-import moondb
+import moondb,sys
+
+#s0 = moondb.get_specimens(mn=['Apollo 11',])
+
+s = moondb.SpecimenFilter()
+s.missionName = ["Apollo 11"]
+res = s.get_results()
+
+apollo11_weight = 0
+for r in res:
+   if r.weight is not None:
+      apollo11_weight += float(r.weight.split(' ')[0])
+
+print(apollo11_weight)
+
+s1 = moondb.SpecimenFilter()
+s1.missionName = ["Apollo 17"]
+res = s1.get_results()
+
+apollo17_weight = 0
+for r in res:
+   if r.weight is not None:
+      apollo17_weight += float(r.weight.split(' ')[0])
+
+print(apollo17_weight)
+
+
+moon_missions = moondb.get_missions()
+
+weight_cum = 0
+for m in moon_missions:
+   s = moondb.SpecimenFilter()
+   s.missionName = [ m.name ]
+   res = s.get_results()
+   weight = 0
+   for r in res:
+      if r.weight is not None:
+         weight += float(r.weight.split(' ')[0])
+   weight_cum += weight
+   print("MoonDB holds {:.3f} kg of specimens from {}".format(weight/1000.0,m.name))
+
+print("MoonDB contains a total of {:.3f} kg of specimen from the Moon!".format(weight_cum/1000.0))
+
+sys.exit(0)
+
 
 f = moondb.AnalysisFilter()
 f.mission = ["Apollo 11"]
@@ -6,10 +50,13 @@ f.analyte = ["Na2O","CaO"]
 f.specimenType = ["SOIL"]
 
 
+
 results = f.get_results()
 
 for r in results:
    for dr in r.dataResults:
-      print(dr.variable,dr.value,dr.unit)
+      print(dr)
+      #print(dr.laboratory,dr.variable,dr.value,dr.unit)
+      
 
 
diff --git a/moondb/__pycache__/core.cpython-37.pyc b/moondb/__pycache__/core.cpython-37.pyc
index ac4a12a0619b1cfa4a59c9813c828a38d796c341..0816258664bb2a023d963806c0222da6c1df54df 100644
Binary files a/moondb/__pycache__/core.cpython-37.pyc and b/moondb/__pycache__/core.cpython-37.pyc differ
diff --git a/moondb/core.py b/moondb/core.py
index c2ae9612ade72406c8c7ad4f1d23bc43ad6a42a7..a062a1ceb1592f3b8c46bbf89ec201fed028f065 100644
--- a/moondb/core.py
+++ b/moondb/core.py
@@ -128,8 +128,8 @@ def _get_resp(path):
    r = resp.json()
    #print(r)
    # To be checked with Peng
-   if 'result' and 'count' in r:
-      return r['count'],r['result']
+   #if 'result' and 'count' in r:
+   #   return r['count'],r['result']
    if 'results' and 'count' in r:
       return r['count'],r['results']
    else:
@@ -169,35 +169,37 @@ def get_specimens(sc=None,mn=None,ln=None,sty=None,ste=None):
    ste: list
        list of sampling techniques
    '''
+   #print(mn)
    sp_list = []
    if sc:
       for s in sc: 
-         spec = _get_resp('/specimen/'+s) 
-         sp_list.append(spec)
+         count,spec = _get_resp('/specimen/'+s) 
+         sp_list.extend(spec)
    if mn:
       for n in mn:
-         spec = _get_resp('/specimenlist/mission/'+n) 
-         sp_list.append(spec)
+         count,spec = _get_resp('/specimenlist/mission/'+n) 
+         sp_list.extend(spec)
 
    if ln:
       for n in ln:
-         spec = _get_resp('/specimenlist/mission/'+n) 
-         sp_list.append(spec)
+         count,spec = _get_resp('/specimenlist/mission/'+n) 
+         sp_list.extend(spec)
 
    if sty:
       for st in sty:
-         spec = _get_resp('/specimenlist/mission/'+st) 
-         sp_list.append(spec)
+         count,spec = _get_resp('/specimenlist/mission/'+st) 
+         sp_list.extend(spec)
 
    if ste:
       for st in ste:
-         spec = _get_resp('/specimenlist/mission/'+st) 
-         sp_list.append(spec)
+         count,spec = _get_resp('/specimenlist/mission/'+st) 
+         sp_list.extend(spec)
 
    sp_obj_list = []
 
    for s in sp_list:
       # dict unpack
+      # print(s)
       s_o = Specimen(**s)
       sp_obj_list.append(s_o)
 
@@ -272,6 +274,28 @@ def get_samplingtechnique():
    pass
 
 
+class dataFilter:
+   def __init__(self):
+      pass
+   def _toJSON(self):
+      return json.dumps(self, default=lambda o: o.__dict__,sort_keys=True,separators=(",", ":"))
+
+@dataclass
+class SpecimenFilter:
+   specimenCode: list = None
+   missionName: list = None
+   landmarkName: list = None
+   specimenType: list = None
+   samplingTechnique: list = None
+
+   def get_results(self):
+      #res_list = get_specimens(mn=["Apollo 11"])
+      res_list = get_specimens(sc=self.specimenCode,
+                               mn=self.missionName,
+                               ln=self.landmarkName,
+                               sty=self.specimenType,
+                               ste=self.samplingTechnique)
+      return res_list
 
 class AnalysisFilter:
    def __init__(self):