working, colored, protocol needs refine