Added IO type and some impls