Index: js/sdk/js_interface/js_interface.cpp
===================================================================
--- js/sdk/js_interface/js_interface.cpp	(revision 944)
+++ js/sdk/js_interface/js_interface.cpp	(revision 1324)
@@ -15,4 +15,14 @@
 #include <frams/genetics/f9/f9_oper.h>
 #include <frams/genetics/fF/fF_oper.h>
+#include <frams/genetics/fS/fS_oper.h>
+#include <frams/genetics/fn/fn_oper.h>
+#include <frams/genetics/genoconv.h>
+#include <frams/genetics/f4/f4_conv.h>
+#include <frams/genetics/fH/fH_conv.h>
+#include <frams/genetics/fB/fB_conv.h>
+#include <frams/genetics/f9/f9_conv.h>
+#include <frams/genetics/fS/fS_conv.h>
+#include <frams/genetics/fn/fn_conv.h>
+#include <frams/genetics/fL/fL_conv.h>
 #include <common/loggers/loggers.h>
 #include <common/loggers/loggertostdout.h>
Index: js/sdk/js_interface/js_interface.idl
===================================================================
--- js/sdk/js_interface/js_interface.idl	(revision 944)
+++ js/sdk/js_interface/js_interface.idl	(revision 1324)
@@ -91,5 +91,5 @@
 
 enum Part_Shape {
-	"Part::SHAPE_BALL_AND_STICK",
+	"Part::SHAPE_BALL",
 	"Part::SHAPE_ELLIPSOID",
 	"Part::SHAPE_CUBOID",
@@ -111,8 +111,8 @@
 	[Value] attribute Pt3D scale;
 	[Value] attribute Pt3D vcolor;
-	attribute double vsize;
 	attribute long shape;
-
-	void Part(optional Part_Shape s = "Part::SHAPE_BALL_AND_STICK");
+	static readonly attribute double BALL_AND_STICK_RADIUS;
+
+	void Part(optional Part_Shape s = "Part::SHAPE_BALL");
 
 	void setPositionAndRotationFromAxis([Const, Ref] Pt3D p1, [Const, Ref] Pt3D p2);
@@ -126,6 +126,8 @@
 
 enum Joint_Shape {
-	"Joint::SHAPE_BALL_AND_STICK",
-	"Joint::SHAPE_FIXED"
+	"Joint::SHAPE_STICK",
+	"Joint::SHAPE_FIXED",
+	"Joint::SHAPE_HINGE_X",
+	"Joint::SHAPE_HINGE_XY"
 };
 
@@ -247,6 +249,7 @@
 	void Geno([Const] DOMString genstring, byte genformat, [Const] DOMString genname, [Const] DOMString comment);
 	boolean isValid();
-	byte getFormat();
+	[Value] SString getFormat();
 	[Value] SString getGenes();
+	[Value] SString getGenesAndFormat();
 	static Validators useValidators(Validators val);
 	static GenoConvManager useConverters(GenoConvManager gcm);
@@ -261,8 +264,8 @@
 
 enum Model_ShapeType {
-	"Model::SHAPE_UNKNOWN",
-	"Model::SHAPE_ILLEGAL",
-	"Model::SHAPE_BALL_AND_STICK",
-	"Model::SHAPE_SOLIDS"
+	"Model::SHAPETYPE_UNKNOWN",
+	"Model::SHAPETYPE_ILLEGAL",
+	"Model::SHAPETYPE_BALL_AND_STICK",
+	"Model::SHAPETYPE_SOLIDS"
 };
 
@@ -272,6 +275,9 @@
 	attribute double startenergy;
 
-	void Model();
-	void Model([Ref, Const] Geno newgeno, optional boolean buildmaps = false);
+	void Model(optional Model_ShapeType sh = "Model::SHAPETYPE_UNKNOWN");
+
+	void Model([Ref, Const] Geno src, Model_ShapeType sh, optional boolean buildmaps = false, optional boolean _using_checkpoints = false, optional boolean _is_checkpoint = false);
+	// The following constructor exists in the SDK, however in idl functions need to differ in number of arguments so it can't exist with the previous constructor
+	//void Model([Ref, Const] Model model, optional boolean buildmaps = false, optional boolean _using_checkpoints = false, optional boolean _is_checkpoint = false);
 
 	[Value] MultiMap getMap();
@@ -283,7 +289,8 @@
 	long getErrorPosition(boolean includingwarnings);
 	Model_ShapeType getShapeType();
+	void declareShapeType(Model_ShapeType sh);
 	void updateRefno();
 	[Const, Value] Geno getF0Geno();
-	void makeGeno([Ref] Geno geno);
+	void makeGeno([Ref] Geno geno, optional MultiMap sh,optional boolean handle_defaults,optional boolean can_be_invalid);
 	void setGeno([Const, Ref] Geno newgeno);
 	void setValidationLevel(long level);
@@ -348,5 +355,7 @@
 
 interface GenotypeMiniLoader : MultiParamLoader {
-    void GenotypeMiniLoader(VirtFILE f);
+	//this constructor has the same number of arguments as the next one which is not allowed in idl
+    //void GenotypeMiniLoader(VirtFILE f);
+	void GenotypeMiniLoader([Const] DOMString filename);
 	GenotypeMini loadNextGenotype();
 };
@@ -442,4 +451,40 @@
 };
 
+interface GenoConverter {
+	[Const] attribute DOMString name;
+	[Value] attribute SString in_format;
+	[Value] attribute SString out_format;
+};
+
+interface GenoConv_f40 : GenoConverter{
+	void GenoConv_f40();
+};
+
+interface GenoConv_f90 : GenoConverter{
+	void GenoConv_f90();
+};
+
+interface GenoConv_fL0 : GenoConverter{
+	void GenoConv_fL0();
+};
+
+interface GenoConv_fBH : GenoConverter{
+	void GenoConv_fBH();
+};
+
+
+interface GenoConv_fS0s : GenoConverter{
+	void GenoConv_fS0s();
+};
+
+interface GenoConv_fH0 : GenoConverter{
+	void GenoConv_fH0();
+};
+
+interface GenoConvHelper{
+	void GenoConvHelper(GenoConverter genoConv);
+	[Const] DOMString getName();
+};
+
 interface GenoOperators {
 	void GenoOperators();
@@ -447,5 +492,5 @@
 	long checkValidity([Const] DOMString geno, [Const] DOMString genoname);
 	long validate(DOMString geno, [Const] DOMString genoname);
-	[Value] SString getSimplest();
+	[Const] DOMString getSimplest();
 };
 
@@ -473,4 +518,9 @@
 	void GenoOper_fF();
 };
+
+interface GenoOper_fS : GenoOperators {
+	void GenoOper_fS();
+};
+
 
 interface GenoOperatorsHelper {
@@ -481,4 +531,5 @@
 	[Value] SString getLastCrossGeno1();
 	[Value] SString getLastCrossGeno2();
+	[Const] DOMString getSimplest();
 };
 
@@ -542,5 +593,5 @@
 	void quickCopyFrom(ParamInterface src);
 
-	//long save(VirtFILE file, [Const] DOMString altname, optional boolean force = false);
+	//long saveMultiLine(VirtFILE file, [Const] DOMString altname, optional boolean force = false);
 
 	static boolean isValidTypeDescription([Const] DOMString t);
@@ -553,5 +604,5 @@
 interface Param : SimpleAbstractParam {
 	void Param(ParamEntry t, VoidPtr o);
-	//long save(VirtFILE file, [Const] DOMString altname, optional boolean force = false);
+	long saveMultiLine(VirtFILE file, [Const] DOMString altname, optional boolean force = false);
 };
 
Index: js/sdk/js_interface/js_types.h
===================================================================
--- js/sdk/js_interface/js_types.h	(revision 944)
+++ js/sdk/js_interface/js_types.h	(revision 1324)
@@ -205,4 +205,9 @@
 	}
 
+	const char* getSimplest()
+	{
+		return genoOper->getSimplest();
+	}
+
 	~GenoOperatorsHelper()
 	{
@@ -214,4 +219,17 @@
 };
 
+struct GenoConvHelper
+{
+	GenoConverter* genoConv;
+	GenoConvHelper(GenoConverter* _genoConv)
+	{
+		genoConv = _genoConv;
+	}
+	const char* getName()
+	{
+		return genoConv->name;
+	}
+};
+
 #endif
 #endif //JS_TYPES_H_
