more flexible I/O port definition