the source can be a array of field