basic io wrapping