Release Notes for Modo 10.0v1

 

Release Date

06 April 2016

System Requirements

Officially Supported Operating Systems

Mac OS X 10.9.x, 10.10.x, and 10.11.x

Windows 7, Windows 8, and Windows 10 (64-bit only)

Linux 64-bit operating system (RHEL 5.4+)

Minimum Hardware Requirements

Intel processor(s), Core i3 or higher

10 GB disk space available for full content installation

At least 4 GB RAM

Display with 1280 x 800 pixel resolution

Internet connection for product activation and online videos access

The Advanced viewport mode requires an NVIDIA or AMD graphics card with at least 512 MB of graphics memory and drivers that support OpenGL 3.2 or higher

Recommended System Requirements

Note:  This information is our best recommendation for the average user. Requirements vary by usage, and individual users may have different requirements from those listed here.

2.5+ Ghz quad-core processor

250+ GB disk space available for caching and temporary files, SSD is preferable

16 GB RAM with additional virtual memory*

Display with 1920 x 1080 pixel resolution

An NVIDIA or AMD graphics card with the latest drivers

2+ GB of graphics memory

OpenGL 4.4 or higher support

*The use of virtual memory improves stability and helps prevent data loss on large projects.

Tested Workstation Hardware

The configurations listed below are those that The Foundry have tested with Modo 17.1v1. Due to the constantly changing nature and wide variety of computer hardware available in the market, The Foundry is unable to officially certify hardware. The list below can be used as a recommendation and does not guarantee that it meets your particular needs.

Please download and install the latest graphics driver from the NVIDIA or AMD websites. Make sure that you are using 8.982.8.1 drivers or higher for AMD cards.

If you encounter any issues, please contact support@thefoundry.co.uk.

Tested Workstation Hardware

Apple

MacPro4, 1

MacPro5, 1

iMac13, 2

MacBookPro10, 1

Dell

Dell T1700

Dell T3610

Dell T3620

Dell T5810

Dell T7610

Dell T7910

Dell Precision Rack 7910

Dell Precision 5510

Dell Precision 7710

Dell M2800

Dell M6800

HP

HP Z440

HP Z600

 

Tested GPU Hardware

AMD Prosumer Graphics Cards

Radeon™ HD 1900 XT

Radeon™ HD 2400 XT

Radeon™ HD 2600 Pro

Radeon™ HD 3870

AMD Enterprise Graphics Cards

FirePro™ W4170

FirePro™ W5000

FirePro™ W8000

FirePro™ W2100

FirePro™ W5100

FirePro™ W4100

FirePro™ W7100

FirePro™ W8100

FirePro™ W9100

 

NVIDIA Prosumer Graphics Cards

Geforce GTX 680

Geforce GTX Titan

Geforce GT 650M

NVIDIA Enterprise Graphics Cards

Quadro® K6000

Quadro® K5000

Quadro® K4000

Quadro® K2000

Quadro® K600

Quadro® K5200

Quadro® K4200

Quadro® K2200

Quadro® K1200

Quadro® K620

Quadro® M5000

Quadro® M4000

New Features

UI

Game Tools Layout

The Game Tools layout focuses on game-related tools and features. Its flexible, easily customizable structure gives you quick access to tools needed for vertex normal editing, texture baking, and exporting to game engines, in addition to the standard modeling tools.

First Person Navigation

You can now use first person navigation to move through 3D space using a set of keyboard shortcuts, giving you a convenient way to explore game level designs.

GL

Advanced Viewport Enhancements

New rendering features have been added to the Advanced viewport to allow for a more photo-realistic look, assisting development for real-time engines in Modo. These features can be configured in the Advanced Options for the 3D (OpenGL) viewport.

Rendering

PBR Material

Two new material types have been added to Modo, closely matching the materials in Unity and Unreal Engine. They use the same material channels, and behave similarly both in both Modo's Advanced viewport, and in rendering.

Modo also includes Unreal Engine 4 and Unity 5 base shaders, providing a WYSIWYG representation of content that matches the runtime environment.

File I/O

Unreal Material Importer

A new plug-in for Unreal Engine 4 has been created, which reads an .xml file exported from Modo containing material information necessary to match the shader parameters set in Modo with those in Unreal Engine 4. This greatly improves the translation process between the two products, saving artists time and reducing iterative errors.

Unity Material Importer

A new plug-in for Unity 5 has been created, which reads an .xml file exported from Modo containing material information necessary to match the shader parameters set in Modo with those in Unity 5. This greatly improves the translation process between the two products, saving artists time and reducing iterative errors.

FBX Animation Import

The FBX Import dialog now has a Merge with existing items option. When enabled, you can load animation data from the .fbx file onto any matching (by name) items in your scene.

There is also a new Import from FBX option in the Actions dialog, which allows you to load actions from .fbx.

FBX Improvements

The new FBX 2015 plug-in allows you to export UV sets alphabetically. Default color correction is now applied to all loaded clips from non-LXO formats. When loading .fbx files, the vector maps, normals, and so on are auto-set to linear color correction.

Optimized Export to Game Engines

The Game Tools layout gives you access to the Export tab, where you can export content to game engines with ready-made presets for Unreal and Unity. You can also create custom presets to target additional engines.

PBR Material Export to Game Engines

You can export Unreal and Unity materials in an .xml format, alongside .fbx files. Used with our new custom Unreal and Unity plug-ins, it allows moving PBR materials easily from Modo to game engines.

DDS Format Support

A new plug-in has been added, which allows you to import a range of common DDS image formats.

Thickness Type for Occlusion Texture

Modo has a new occlusion type: Thickness. This allows you to bake out thickness and tweak its parameters, compared to the thickness layer.

Modeling

Vertex Tools

The Game Tools layout houses a series of commands for setting up vertex normals. Individual edges can be set as hard or soft, which constructs a vertex normal map on the mesh.

Baking

Bake Items and Baking Workflow

Modo uses Bake Items to store bake-related parameters on an item, which allows the baking of assets to be re-fired with exactly the same settings as the input data changes. This makes the baking process more automated. In addition, Modo's new Baking Wizard makes the baking process more easier.

UDIMs

UDIM Baking

UDIM baking is now handled automatically. You can select the UDIM texture and bake it like any other texture in Modo.

UDIM Wizard

This command automates the creation and setup of UDIM image sets, making it easier to set up UDIMs in Modo.

UVs

UVs to SVG

This new feature offers a more modern alternative to the .eps format. Exporting UVs with UDIMS to .svg format gives new options for layering UDIMs and directly loading them into Modo as textures.

Convert UVs to Mesh Improvement

The UVs to Mesh command can now write its output to a morph map in the same Mesh Item, as well as a separate item, like before. Additionally, it can preserve polygon tags and vertex order on continuous UV maps.

Painting

Vertex Map Painting Updates

Vertex painting tools now have blend modes, and you can now paint discontinuous vertex colors. You also have the option to view each channel of the vertex map in isolation.

Dynamics

Soft Body Improvements

Soft Bodies now handle the combination of polygons and curves in the same item as a "hybrid" mesh. They interact, can collide, and share channel settings. Curves use the Bend and Struct values.

Soft Bodies have improved collisions both with self and other items, and improved goal matching.

The Pressure property is now a percentage, and scales internally based on the mass of the mesh, avoiding issues where changing the mass required changing the pressure value.

Feature Enhancements

UI

Redirected Properties

The Properties panel for one item now shows channels from an unselected but connected item. For example, selecting a light in the Item List or Shader Tree now shows the light color channel, even if the light material is not selected. Selecting a texture layer in the Shader Tree displays its projection settings without selecting the Texture Locator.

File I/O

Mesh Export to Game Engines Without Triangulation

There is now an option to force triangulation on FBX export, making sure it matches Modo's internal triangulation for GL/Render.

Relative Paths

In the Images tab, if the image you use is stored somewhere relative to the scene file or the current project, the display of the path is truncated.

Modeling

Smooth Tool Enhancement

The Smooth tool now has a Volume Preservation option. When enabled, the smoothed mesh is similar to the original in terms of shape and volume, while the topology is smoothed out. You can also do this with the Sculpt Smooth tool.

Baking

Preview/RayGL Updates

Preview baking and RayGL in Bake mode can now get their settings from a bake item, simplifying the setup process.

Baking Border Expansion Enhancement

Modo now automatically adds an alpha output for the bake (one for each anti-aliasing state of outputs being baked to).

Color

Color Picker Enhancements

You can now use the Color Picker's own controls to adjust intensity and color for many material and texture properties. This avoids having to change selection while adjusting. You can also swap between the background and foreground colors for textures without having to leave the Color Picker.

Normal Map Colorspace Conversion Prompting

When changing texture layers to Normal effect, or setting a clip to an image layer which has Normal effect, a dialog appears to ask if color correction should be auto-set to Linear for the clip.

Preview

Preview Bake to Texture Support

Preview baking to textures has been implemented. This enables quick iterations while tweaking the baking result, similar to how it works for rendering.

Miscellaneous

• ID 32043 - Automatic selection of sub-tabs in forms has been improved.

• ID 47704 - Support has been added to the camera 'roll' property on file import.

• ID 48604 - The Render Region tool has been updated to support camera resolution override.

• ID 49082 - Locked and Drop (no scale) options were added to the Size Mode dropdown, allowing more control over the Mesh Paint tool.

• ID 49706 - UV map support has been increased from 8 to 32.

• ID 50126 - SolidWorks plug-ins have been updated to support 2016 files.

Main Bug Fixes

This is a list of the most important bug fixes. For a full list, see The Foundry Community site.

• ID 29192 - Render progress always displayed 100% and Time Remaining = Done, when baking.

• ID 29503 - Group masks in the Shader Tree sometimes caused an increase in render times.

• ID 37331 - Materials assigned to a SolidWorks model could disappear after save and re-open, due to very long polygon tags.

• ID 37825 - When switching from Array to Linear mode, the properties didn't update.

• ID 38730 - Replicator prototypes with offset pivots rendered incorrectly, but displayed correctly in the OpenGL viewport.

• ID 38848 - The Open Project Folder command caused Modo to stall for several seconds.

• ID 41009 - Imports failed if bind pose data was incomplete or missing.

• ID 41985 - Adding new items to a group set as a prototype didn't update when used with a dynamic replicator.

• ID 43048 - Geometry snapping for the Topology pen tool was not working correctly.

• ID 43128 - UV Maps were not exported in the correct order.

• ID 43287 - Using the Lattice deformer's auto-fit function did not affect all parts of the mesh it was being fitted to.

• ID 43367 - Right-clicking in the Script Editor broke the input.

• ID 43868 - Dynamic Replicators were not passing the correct particle rotations to replicas.

• ID 44127 - Changing item properties in a particle simulation could lead to crashes during simulation.

• ID 44276 - The Rotate tool was misaligned with a Local Action Center.

• ID 45247 - The Solid Drill Stencil sometimes produced incorrect results.

• ID 46061 - When using image-based sculpting, the displacement distance doubled after each sculpting stroke.

• ID 46367 - When painting on a mesh with poorly created UVs, painting sometimes caused memory use to increase significantly.

• ID 47067 - In the Shader Tree, Filter on Selection was not working in Material view.

• ID 47297 - The Texture Switch node didn't work with UVW maps.

• ID 47320 - Modo's windows came back into focus when switching to other applications.

• ID 47322 - Instanced items with transformed pivots did not render in the correct location, but displayed correctly in GL.

• ID 47388 - Multi-resolution sculpt data did not follow deforming meshes.

• ID 47531 - When rendering animations, the time remaining sometimes displayed incorrectly.

• ID 47560 - The Move brush did not always affect all selected vertices.

• ID 47608 - The input value of the Texture Switch node wrapped at 100%, instead of after it.

• ID 47640 - Removing dynamics from an item didn't clear its simulation cache.

• ID 47684 - Exposing a single relationship exposed all relationships for assembly presets.

• ID 47721 - The Dynamic Curves as Hair script wasn't working.

• ID 47998 - When scrubbing material properties, Preview stopped updating.

• ID 48108 - Backdrop images scaled incorrectly when Keep Aspect was enabled.

• ID 48455 - Rotating an environment map did not rotate the viewport reflections in the Advanced viewport.

• ID 48560 - Export to .fbx of scenes with multiple actions with dynamic parents failed.

• ID 48696 - Instances were not exported if the original geometry wasn't exported.

• ID 48887 - Purging unused materials could delete image maps used in other opened scenes.

• ID 49129 - Images in .fbx files did not have colorspace options.

• ID 49339 - Align Work Plane to Selection did not work correctly in some cases, such as a loop selection on a rotated unit sphere.

• ID 49367 - Vertex normals drew incorrectly with a custom Work Plane.

• ID 49369 - Paint selection of polygons through the Camera view could be problematic.

• ID 49394 - Bounding box items did not render.

• ID 49546 - Mirroring geometry mirrored the vertex normals incorrectly.

• ID 49548 - Using a Bump Height gradient as a group mask produced artifacts during render.

• ID 49557 - Using Loop Slice on a multi-resolution sculpted mesh resulted in loss of the sculpt data.

• ID 49561 - Photometric lights in combination with MIS could lead to NaNs.

• ID 49568 - Mac OS X only: Running a simulation with a dynamic curve and a static rigid plane caused Modo to become unresponsive.

• ID 49600 - Changing cameras did not show the correct aspect ratio if Resolution Override was enabled on the camera.

• ID 49616 - Preview image saving and auto-saving to layered images caused an extreme increase in memory use.

• ID 49646 - Meshes with displacement maps were drawn incorrectly in the Default and Advanced viewports.

• ID 49660 - Enabling or disabling group masks in the Shader Tree with Preview running caused Modo to crash.

• ID 49809 - Changing environments with the Preview renderer open caused Modo to crash.

• ID 49870 - Mac OS X only: Problems with SSS and EIS sometimes led to NaNs and caused Modo to become unresponsive.

• ID 49930 - Multi-resolution data could be lost when moving a mesh.

• ID 50084 - The Make UVs option of Bezier tools did not always work correctly.

• ID 50186 - Fur-using guides driven by dynamics popped when rendering animations.

• ID 50228 - The Blur Length setting had no effect on Blobs.

• ID 50229 - No warning appeared when using Open Project Folder without a project set.

• ID 50337 - Replicated mesh visibility depended on camera location.

• ID 50441 - Rendering scenes with references sometimes caused Modo to crash.

• ID 50682 - Closing a scene when multiple scenes were open caused Modo to crash.

• ID 50685 - Transferring items between scenes caused Modo to crash.

• ID 50801 - Perl libraries could not be used when running Modo from a network location.

• ID 50854 - Simulations changed after being saved, re-opened, and re-simulated.

Known Issues and Workarounds

This section covers known issues and gives workarounds for them, where appropriate.

Advanced Viewport

Shadows don’t work if there is no default shader in the Shader Tree.

Image Based Lighting (IBL) does not work correctly with Unreal/Unity material roughness if there is no default material under the Unreal/Unity material in the Shader Tree.

• ID 51164 - Adding a new material after changing the image on an environment with Advanced viewport lighting set to Scene + Environment and the background set to Environment uses the previous environment image for lighting, but the correct one for reflections.

Adding another material should fix this issue.

• ID 51124 - Clearcoat displays incorrectly (dark), when used with Image Based Lighting (IBL).

• ID 50810 - Anisotropic texture filtering is lower quality than in the Default viewport.

• ID 50698 - Modo can become unstable when using the Advanced viewport on NVIDIA 311 series drivers.

We recommend that you avoid using very old drivers in conjunction with the Advanced viewport.

• ID 50629 - Changing the Default View Colorspace (System > Preferences > Rendering > Color Management) with the Advanced viewport visible can lead to instability.

• ID 49598 - Spurious diagonal lines of bad pixels may appear in the Advanced viewport with some AMD cards.

• ID 46995 - Ambient Occlusion display in the Advanced viewport is affected by selected item wireframes.

You can disable Show Selection in the Visibility options or disable wireframe drawing on the active mesh layers.

Assemblies

• ID 36452 - Assemblies exported from the Item List context menu result in poor visual layout of nodes on import.

As a workaround, you can save assemblies from the Schematic viewport.

Baking

• ID 50671 - Baking displacement maps can cause UV seams to be visible, and the baked displacement map to show quilting effects and other render artifacts.

To avoid this, you can turn off Smooth Positions on the low resolution mesh, use a higher resolution displacement image, higher subdivision level, and/or Box AA filtering to improve quality.

• ID 49437 - The Bake Channel Swizzling option can’t bake to texture alpha.

• ID 48338 - Bake Direction Effects doesn't work correctly with EIS and roughness.

Disable Environment MIS in the Channels list for the render item when using the Bake Direction Effects option.

Color Management

• ID 49244 - With Perform Color Correction on, setting a default scene to a scene with a mesh that has a position channel crashes at launch.

Use System > Reset Preferences to reset to defaults or move/remove the default scene as a workaround.

Default Viewport

RGBA textures only draw correctly in the Advanced viewport. In the Default viewport, any unsupported texture effect on an image map is drawn as diffuse color when the layer is selected in the Shader Tree.

• ID 50696 - For image maps, setting effects that can't be displayed in the viewport displays them as diffuse color, but may break subsequent updates to GL shading.

File and Image I/O

• ID 51034 - Reverting a scene with a tool active may cause Modo to crash.

To avoid this, drop the active tool before using File > Revert.

• ID 49728 - Exporting selected layers (from the Item List context menu) to .fbx doesn't export instances unless the original mesh is also exported.

To resolve this, set the .fbx preference to Export Selection and use Export As….

• ID 47230 - Alembic export of a mesh from a MODO 401 scene fails due to a custom channel called inherit.

• ID 47036 - Color management in .svg images is not currently supported. This is a side-effect of a bug fix where the largest allowable image size (64k x 64k) was always used when color correction was enabled.

• ID 46962 - Rendering .svg images used as stencil maps for displacement or for layer masking, can be very slowly.

Fur

• ID 37272 - If multiple layers of fur are present with different materials in their groups, some materials may not be evaluated.

• ID 35731 - Fur length textures can’t be edited with the Stretch tool.

Use different fur length drivers, such as hair guides or vector vertex maps.

General

• ID 49514 - Mac OS X only: Running modo_cl before running the UI Modo application breaks code signing.

As a workaround, start the UI version of Modo once, before running modo_cl on any system where you later intend to use the UI version.

Input Devices

• ID 35856 - Linux only: Plugging in a Wacom tablet while Modo is running can cause undesired movement. This cannot be fixed, due to a limitation of the hardware driver.

To avoid this, plug in the tablet before application startup or restart.

MeshFusion

• ID 48669 - Linux only: MeshFusion objects set to Airtight Final may cause Modo to crash when the Dup & Convert to Mesh option is used.

If the Dup & Convert to Mesh button is not exposed through the more (>>) button, Modo doesn't crash. You can avoid clicking the more (>>) button by maximizing the form (numpad 0) and/or collapsing the other form sections by clicking on them.

Modeling

• ID 48124 - The Multi Slice option of the Edge Slice tool doesn't work across multiple polygons if t = 0.0% and an ngon is involved.

Network Rendering

• ID 30318 - Network Rendering doesn’t support Realflow particles.

• ID 25636 - Frame passes are not supported.

Nodal Shading

• ID 50642 - Nodal shading does not support UDIMs.

Painting/Sculpting

• ID 41762 - Morph maps and deformers must be enabled to sculpt on a mesh that was used as a background item in creating the morph map.

As a workaround, save and reload the scene.

• ID 41682 - Textures are not always updating in Preview/Render when painting on an image map.

You can save and reload the image to force the update.

• ID 40701 - Image-based sculpting can cause meshes to tear in OpenGL.

Particles

• ID 51080 - Any particle-editing tool applied to an empty particle simulation can lead to instability.

• ID 34925 - Re-opening scenes saved with large particle caches can cause problems.

To avoid such issues, delete the cache before closing Modo, or export the particles to .csv cache files or Realflow .bin files. You can do this by attaching one of those nodes to the Particle Simulation item in the Schematic viewport, and clicking Cache Simulation.

Presets

• ID 36881 - Selecting a material mask, then double-clicking it to add an advanced preset (such as the car paint presets) loads the preset incorrectly.

Drag and drop the preset on the mesh in Preview or GL as a workaround.

Preview

If a high poly mesh is not visible, the Preview baking output will be incorrect.

Reset Preview to fix the baking.

• ID 50923 - When assigning an existing material tag to a mesh or polygon selection, Preview may not update correctly.

Select Reset Preview Render from the Preview options dropdown.

• ID 50634 - Editing the material of an invisible item makes it render in Preview.

To avoid this, change the Preview mode from Full to Fast, reset Preview rendering, or toggle the visibility of the mesh item.

• ID 48724 - if Preview is open as a floating palette (F8) and then maximized (numpad 0), it may fail to update keyframed material color changes, when switching frames or rendering an animation.

As a workaround, avoid maximizing the embedded Preview viewport.

• ID 48639 - Rendering to 16- or 32-bit OpenEXR or .png produces files without an alpha channel.

Save to one of the other formats.

• ID 47763 - Baking to render outputs can be slower using Preview in some cases, due to the way it is optimized for interactivity.

To increase speed, use final render instead.

• ID 41160 - Preview rendering an animation doesn't allow the saving of layered images.

You can use final render for animation renders where multiple outputs are needed.

Procedurals

• ID 49673 - Instances of deferred meshes do not conserve memory like replicas do, but are easier to place and align.

Use replicators with a transform map on the Point Cloud mesh. Select the Transform Map in the map list, then use the Transform tools in Vertex mode to manipulate the replicas.

• ID 46512 - When rigged, Rock items and other procedurals do not display correctly in GL. This is a limitation of the feature and will not be fixed.

You can use Preview or RayGL to visualize the variations from rigging.

Projections

• ID 49473 - Projections are incorrect if the projecting camera is set to Vertical film fit mode and the width is less than the height.

• ID 49304 - Linux only: Selecting (none) for the camera's background image may lead to instability.

• ID 43771 - Camera projections from non-render cameras show distortion in GL and baking.

To avoid this, make sure that the projection camera has a film width to height ratio that matches the main render camera.

RayGL

• ID 50404 - RayGL shows the color output of the baked map on the mesh without applying the texture effect.

• ID 50070 - Baking textures in RayGL with Bake items can disregard the target mesh selection.

RayGL in Bake mode can only have one texture rendered and then applied to all visible meshes. You can set Preview to Current Bake Item to see the selected texture.

References

• ID 44492 - If a scene that already contains references is referenced, the shading of the original references may not survive.

As a workaround, limit scenes with shading to one level of reference.

• ID 41119 - Reloading a reference after replacing it with the same file can cause Modo to crash.

Rendering

• ID 48348 - Artifacts may be present when rendering an animation to a layered image format.

You can render to a non-layered format to avoid this.

• ID 46468 - Additional (masked) alpha outputs are not saved when rendering animations.

Since other render outputs do work, a remapped depth output with a very high maximum depth setting functions similarly to an alpha output.

• ID 43236 - Windows only: If the number of processors on a system is greater than 64, not all of the processors are used.

Rigging

• ID 27244 - Duplicating joints in a bound mesh retains influences from the original joint chain.

Shader Tree

• ID 37858 - In the Shader Tree, choosing a group from Add Layer > Image Map > (use clip browser) fails.

To work around this issue, in the Clip Browser, choose a single image instead of the group, and then change to the image group using the Texture Layer's Properties tab.

• ID 30947 - Layer masking displacement does not work unless you drag and drop the masking layer onto the displacement layer.

Unreal and Unity Materials

• ID 50860 - Unreal Clearcoat does not display correctly in the Advanced viewport.

• ID 50701 - Unreal material Ambient Occlusion does not bake correctly in Modo.

• ID 50700 - There is no way to visualize the Unreal SubSurface Color effect in Modo.

• ID 50451 - On some graphics cards, Unity material may cause flickering in the Advanced viewport when used with bump maps and shadows.

UI

• ID 47659 - Windows only: Right-clicking in a text field and selecting Copy doesn't work.

• ID 44896 - Dragging and dropping an image from the system into the Clips list doesn’t work.

If the Clips list is empty, drop the image onto the bar at the top, otherwise drop it above or below other images in the list.

• ID 43162 - Windows only: Setting a custom text size affects Modo's text drawing.

As a workaround, go to the compatibility settings by right-clicking the Modo shortcut or executable, and turn off font-scaling for the app.

Developer Notes

Here are the changes relevant to developers.

Bug Fixes

• ID 49823 - TD SDK: Indexing was wrong when deleting transforms, and clearing a transform was broken.

• ID 49861 - TD SDK: Scene().items and item.children() used Item Types differently.

• ID 50536 - TD SDK: modo.Scene().items(iType) was very slow compared to similar custom functions. The speed has been improved by a factor of 50 in a scene containing 5000 meshes.

• ID 50678 - SDK: Modo now handles plug-ins that set depItemType to zero, like the gear procedural.

• ID 50716 - TD SDK: Synthetic channels were not handling the correct type.