A implementation of protocols using java :D