added tangent types for automatic differentiation