library for i/o