added serializable support