add serializable advanced function