implemented basic recursive saving and loading, need to work on perf
more fixes and forgot to mention more tests were added