add restorable functionality