introduced json and factory