init with spec