A method for establishing identities of hand contacts on a multi touch surface using relative contact positions and features, the method comprising: obtaining a position and one or more contact features of each of a plurality of contact; corresponding to hand parts on or near the multi-touch surface, wherein each contact feature is based on at least one of a proximity of the contact, a geometrical parameter of a shape of the contact, and a relative position of the contact to another contact; the method characterised by the additional steps of: defining a template comprising a plurality of attractor points by setting a position on the surface for each of the plurality of attractor points, each attractor point having an identity corresponding to a hand part identity, wherein at least two of the attractor points are each associated with a weighting function that is a function of one or more of the contact features; computing a matrix of distances from each contact to each attractor point; for each attractor point associated with a weighting function, weighting the distances between each contact and the attractor point with a weight according to whether the geometrical features of the contact match those expected from the hand part that the attractor represents; finding a one-to-one assignment of the contacts to the attractor points that minimizes a sum of distances between each contact and its corresponding attractor point; and recognizing particular hand configurations from the number and features of contacts assigned to the attractor points. obtaining a position and one or more contact features of each of a plurality of contact; corresponding to hand parts on or near the multi-touch surface, wherein each contact feature is based on at least one of a proximity of the contact, a geometrical parameter of a shape of the contact, and a relative position of the contact to another contact; the method characterised by the additional steps of: defining a template comprising a plurality of attractor points by setting a position on the surface for each of the plurality of attractor points, each attractor point having an identity corresponding to a hand part identity, wherein at least two of the attractor points are each associated with a weighting function that is a function of one or more of the contact features; computing a matrix of distances from each contact to each attractor point; for each attractor point associated with a weighting function, weighting the distances between each contact and the attractor point with a weight according to whether the geometrical features of the contact match those expected from the hand part that the attractor represents; finding a one-to-one assignment of the contacts to the attractor points that minimizes a sum of distances between each contact and its corresponding attractor point; and recognizing particular hand configurations from the number and features of contacts assigned to the attractor points. defining a template comprising a plurality of attractor points by setting a position on the surface for each of the plurality of attractor points, each attractor point having an identity corresponding to a hand part identity, wherein at least two of the attractor points are each associated with a weighting function that is a function of one or more of the contact features; computing a matrix of distances from each contact to each attractor point; for each attractor point associated with a weighting function, weighting the distances between each contact and the attractor point with a weight according to whether the geometrical features of the contact match those expected from the hand part that the attractor represents; finding a one-to-one assignment of the contacts to the attractor points that minimizes a sum of distances between each contact and its corresponding attractor point; and recognizing particular hand configurations from the number and features of contacts assigned to the attractor points.