implemented serial protocol