trait Text[T]{ def reads(string : String) : T; def writes(t : T) : String; } class ElementModel[T <: AnyRef]( private val element: org.jdom.Element)(implicit text : Text[T]) { def getElement = element def getObject: AnyRef = text.reads( element.getText ) def setObject( obj: AnyRef ) = text.writes( convertType( obj.asInstanceOf[T] ) ) }