Remove the default smart-Some constructor
Change the typesmart factory hierarchy so that it can preserve origins if the wrapped origins has origin information