Auto field population through mapping

It would be nice to have the fields that are available on multiple levels to auto populate based on the orgin level.



Ex: If I select the lead source at the contact level, when I go to create a company that filed is already complete based on the information at the company level, further when I go to create a deal the lead source filed is already entered with the information from the company level....


This should be a standard function, that allows fields to be mapped accross. A workflow for this is not the best solution.