implement operations for term