def METHOD_NAME(b_obj=None, n_node_type=None):
    """Essentially a wrapper around create_block() that creates nodes of the right type"""
    # when no b_obj is passed, use the passed n_node_type
    if not b_obj:
        if n_node_type is None:
            n_node_type = "NiNode"
    # get node type - some are stored as custom property of the b_obj
    else:
        # let n_node_type overwrite the detected node type
        if n_node_type is None:
            try:
                n_node_type = b_obj.niftools.nodetype
            except AttributeError:
                n_node_type = "NiNode"
            # ...others by presence of constraints
            if has_track(b_obj):
                n_node_type = "NiBillboardNode"
    # now create the node
    n_node = block_store.create_block(n_node_type, b_obj)
    # customize the node data, depending on type
    if n_node_type == "NiLODNode":
        export_range_lod_data(n_node, b_obj)
    return n_node