Implement IO part