listener implements serializable