typename TypedData< std::vector< U > >::Ptr vectorLookup( Lookup<T,U> &lookup, typename TypedData< std::vector< T > >::Ptr x )
{
	typename TypedData< std::vector< U > >::Ptr res = new TypedData< std::vector< U > >;
	res->writable().resize( x->readable().size() );
	typename std::vector< T >::const_iterator xIt = x->readable().begin();
	typename std::vector< U >::iterator yIt = res->writable().begin();

	for ( ; xIt != x->readable().end(); xIt++, yIt++ )
	{
		*yIt = lookup( *xIt );
	}
	return res;
}