revised factory/builder to avoid ljson