Some changes: DataModel now works in a more general ways, added some
comments.