todo: implement more match function