Fix part of API and simplify full_io.[ch]