serial communication implementation