added ArgumentFactory