got most of the derived type work done