open and close with contextlib
read in upper or lower case args