make some more custom logic
make full duplex