updated factories (reduced redundancy)