write UI models in interfaces using dynamic type creation, dependency injection and depencendy tracking