Add typed version of QueryFactory interface and implement by AbstractQueryFactory