factories were returning the wrong things