implements Serializable interface