The main difference between BUILD and TWEAK is that BUILD will replace all default and requiredness handling, while TWEAK keeps it intact. TWEAK gets run after these aspects had their turn, so if you have an "is required" attribute that doesn't get a value passed, the BUILDALL process will throw the corresponding exception before TWEAK even gets invoked.
Don't forget that with the assignment syntax for attribute defaults you're allowed to do calculations, too! You can even refer to other attributes in there, as long as you use the $!foo syntax. hope that helps - Timo