match constructor