updated documentation, general cleanup, allow custom JSON sources