Add [copy] function and scoped [case] overload