IO first implement