Started restructuring the code
More stuff with Listing_Iterator.  Use std::type_traits instead of boosts