made require optionally linear