If a programmer develops an entire system as a “work for hire” does that prohibit him from re-using any components of that code on his next project for another client? At what point is the entire system the piece of intellectual property, and the component (say a subroutine to sort a list) not the intellectual property of the first client?