input just needs properties - module fills in the rest