we can do this with requiring
we can get most of what we need with data.Requring with new version of named(name, input). make input lazy to avoid unintential side effects