completed basic io