issue #1: support application registration & saving/loading to json