why do you have to use this context manager?