reordered to make .update more powerful