Refactor TargetCollection into TargetList

Build TargetList functions and derived classes