WIP: initial version + i/o definition