vector-valued functions