switch to uninhabited type Z for sources / sinks, also add effect function