some changes in shell architecture
make io return in order