allow fingerprint in Uid.
introduce Uid#dup to recompute the UID with altered values that you have to pass in. this avoids having to pass around (or, generally, saving) the UID model (usually Pic, etc).
i'm not sure if i like this step as usually recomputing a UID should just bump the fingerprint. maybe this shouldn't be in the base Uid class?