Index: /issm/trunk-jpl/src/jl/classes.jl
===================================================================
--- /issm/trunk-jpl/src/jl/classes.jl	(revision 26621)
+++ /issm/trunk-jpl/src/jl/classes.jl	(revision 26622)
@@ -154,13 +154,11 @@
 
 	println(io,"Model:")
-	@printf "%19s: %-22s -- %s\n" "mesh" typeof(md.mesh) "mesh properties"
-	@printf "%19s: %-22s -- %s\n" "geometry" typeof(md.geometry) "surface elevation, bedrock topography, ice thickness,..."
-	@printf "%19s: %-22s -- %s\n" "mask" typeof(md.mask) "defines grounded and floating regions"
-	@printf "%19s: %-22s -- %s\n" "materials" typeof(md.materials) "material properties"
-	@printf "%19s: %-22s -- %s\n" "initialization" typeof(md.initialization) "initial state"
-	@printf "%19s: %-22s -- %s\n" "stressbalance" typeof(md.stressbalance) "stress balance parameters"
-	@printf "%19s: %-22s -- %s\n" "constants" typeof(md.constants) "physical constants"
+	@printf "%19s: %-26s -- %s\n" "mesh" typeof(md.mesh) "mesh properties"
+	@printf "%19s: %-26s -- %s\n" "geometry" typeof(md.geometry) "surface elevation, bedrock topography, ice thickness,..."
+	@printf "%19s: %-26s -- %s\n" "mask" typeof(md.mask) "defines grounded and floating regions"
+	@printf "%19s: %-26s -- %s\n" "materials" typeof(md.materials) "material properties"
+	@printf "%19s: %-26s -- %s\n" "initialization" typeof(md.initialization) "initial state"
+	@printf "%19s: %-26s -- %s\n" "stressbalance" typeof(md.stressbalance) "stress balance parameters"
+	@printf "%19s: %-26s -- %s\n" "constants" typeof(md.constants) "physical constants"
 
 end# }}}
-
-
Index: /issm/trunk-jpl/src/jl/solve.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve.jl	(revision 26621)
+++ /issm/trunk-jpl/src/jl/solve.jl	(revision 26622)
@@ -8,8 +8,14 @@
 	value::Float64
 end# }}}
+function GetParameterValue(param::DoubleParam) #{{{
+	return param.value
+end#}}}
 struct IntParam <: Parameter #{{{
 	enum::IssmEnum
 	value::Int64
 end# }}}
+function GetParameterValue(param::IntParam) #{{{
+	return param.value
+end#}}}
 mutable struct Parameters #{{{
 	lookup::Dict{IssmEnum,Parameter}
@@ -28,4 +34,10 @@
 
 	parameters.lookup[enum] = IntParam(enum,value)
+
+end#}}}
+function FindParam(parameters::Parameters,enum::IssmEnum) #{{{
+
+	param = parameters.lookup[enum]
+	return GetParameterValue(param)
 
 end#}}}
@@ -194,5 +206,5 @@
 
 abstract type Analysis end
-struct StressbalanceAnalysis#{{{
+struct StressbalanceAnalysis <: Analysis#{{{
 end #}}}
 
@@ -209,7 +221,9 @@
 
 	#Solve
-	Stressbalance(femmodel)
+	analysis = StressbalanceAnalysis()
+	Core(analysis,femmodel)
 
 	#then what??
+	error("STOP")
 
 end# }}}
@@ -237,4 +251,7 @@
 	CreateConstraints(analysis,constraints,md)
 
+	#Configure objects
+	ConfigureObjectx(elements,nodes,vertices,parameters,inputs)
+
 	#Build FemModel
 	return FemModel(elements,vertices,nodes,parameters,inputs,constraints)
@@ -247,5 +264,5 @@
 	tempparams   = Parameters(Dict{IssmEnum,Parameter}())
 	tempinputs   = Inputs(-1,-1,Dict{IssmEnum,Input}())
-	tempvertices = Vector{Vertex}(undef,0)
+	tempvertices = Vector{Vertex}(undef,3)
 	tempnodes    = Vector{Node}(undef,0)
 
@@ -283,4 +300,12 @@
 	FetchDataToInput(md,inputs,elements,md.materials.rheology_B,MaterialsRheologyBEnum)
 	FetchDataToInput(md,inputs,elements,md.materials.rheology_n,MaterialsRheologyNEnum)
+end# }}}
+function ConfigureObjectx(elements::Vector{Tria},nodes::Vector{Node},vertices::Vector{Vertex},parameters::Parameters,inputs::Inputs) #{{{
+
+	for i in 1:length(elements)
+		Configure(elements[i],nodes,vertices,parameters,inputs)
+	end
+
+
 end# }}}
 
@@ -334,7 +359,41 @@
 
 end#}}}
-function Stressbalance(femmodel::FemModel)
+function Core(analysis::StressbalanceAnalysis,femmodel::FemModel)# {{{
+
+	#Fetch parameters relevant to solution sequence
+	maxiter = FindParam(femmodel.parameters,StressbalanceMaxiterEnum)
+	restol  = FindParam(femmodel.parameters,StressbalanceRestolEnum)
+	reltol  = FindParam(femmodel.parameters,StressbalanceReltolEnum)
+	abstol  = FindParam(femmodel.parameters,StressbalanceAbstolEnum)
+
+	solutionsequence_nonlinear(femmodel,analysis,maxiter,restol,reltol,abstol)
 	error("STOP")
-end
+
+end #}}}
+function solutionsequence_nonlinear(femmodel::FemModel,analysis::Analysis,maxiter::Int64,restol::Float64,reltol::Float64,abstol::Float64) # {{{
+
+	#Initialize number of iterations
+	count = 0
+	converged = false
+
+	#Get existing solution
+	ug = GetSolutionFromInputsx(analysis,femmodel)
+
+	#Loop until we reach convergence
+	while(~converged)
+
+		error("not implemented yet")
+
+		#Increase count
+		count += 1
+		if(count>maxiter)
+			println("   maximum number of nonlinear iterations (",maxiter,") exceeded")
+			converged = true
+		end
+	end
+
+	error("STOP")
+
+end# }}}
 
 #Element functions
@@ -360,2 +419,14 @@
 	end
 end #}}}
+function Configure(element::Tria,nodes::Vector{Node},vertices::Vector{Vertex},parameters::Parameters,inputs::Inputs) # {{{
+
+   #Configure vertices
+   for i in 1:3
+      element.vertices[i] = vertices[element.vertexids[i]]
+   end
+
+	#Point to real datasets
+	element.parameters = parameters
+	element.inputs     = inputs
+	
+end # }}}
