interfacing IO functions