huge changes revert back from JSON