BUILD LOG
Product Kill Sin Role Founder / PM / Engineer Status Active Development
Focus Systems, AI, UX, Discipline Updated August 2026
SYSTEM OVERVIEW
Kill Sin is a mobile discipline app that turns the daily battle against vices into a gamified warfare experience — combining habit tracking, AI mentorship, and ritual systems.
Mission: help users overcome daily struggles through a war-themed, faith-rooted system.
Core idea: every sin is an “opponent,” every day is a battle you log, and Shepard mentors you with scripture + urgency.
MY ROLE
Vision & product strategy (4-feature framework)
AI system design (Shepard persona doctrine, eval suite, 4-model bake-off, Fireworks migration)
Full-stack dev (React Native + Expo + Node/Express on Render + Fireworks serverless inference)
Design & theming (HUD war-room design system, central typography presets, isolated Bible reading theme)
CORE SYSTEMS
Conquer — battle flow
War Log — calendar, records, stats, achievements
Shepard AI — battle mentor + general mode
Enemies & Nightly Debrief — tracked opponents & the daily ritual
Bible — in-app scripture, reading progression
Infrastructure — persistence, dev sandbox, evals, model layer
Launch hardening + first device build — a 29-issue release audit executed in four phases: dev scaffolding provably eliminated from release bundles, a fail-closed server with /health observability, 510 automated tests wired into every build — and the first signed iOS build installed and verified on real hardware. → Section 10
Under Attack: Hold the Line — the app can finally help during temptation, not just before and after: a one-tap interrupt built deterministic-first (your WHY → hold the line → one physical action → then Shepard), with holds logged and earning XP. → Section 10 (or wherever you filed it)
Home v3: The Hit List — Home rebuilt around one question: how goes the war against your enemy. Days Free front and center, Shepard's Daily Brief, and Tonight's Watch. → Section 1
Shepard v3 + Fireworks migration — (keep your existing bullet as-is) → Section 4
Bible system shipped — (keep as-is, or upgrade "WEB translation" to "four translations, fully offline") → Section 8
LATEST UPDATES
BUILD INDEX
SECTION 1 — CORE NAVIGATION & FOUNDATION
Purpose: establish the foundation: navigation, feature structure, and theme.
Aug 2025 — Initial Conquer Flow Built
Established the core home screen with four primary modes: Conquer, Comfort, Commandments, and Christ
Implemented early navigation structure and feature separation using a minimal, wireframe-style layout
Built the first Conquer flow, including sin selection across seven categories
Designed a daily battle experience with streak tracking and outcome logging
Integrated AI chat directly into the battle screen to support real-time guidance
Focused on validating core functionality and user flow before visual polish
VERSION 1
Sept 2025 — UI Redesign, Visual Identity
Redesigned the home screen with distinct color-coded cards for each core mode
Introduced clearer visual hierarchy and improved scannability
Moved away from a purely neon yellow/black system toward a multi-color identity
Added grid and holographic-inspired backgrounds to support a futuristic direction
Began shaping the app’s “spiritual warfare” theme through color and layout rather than text alone
VERSION 2
June 2026 — Dashboard Redesign
Redesigned the Kill Sin dashboard into a cleaner daily command center. The old layout had oversized stat sections and required too much scrolling, so I rebuilt the screen around faster access to the user’s mission, progress, and next action.
What Changed
Added a Shepard status panel with rank, greeting, streak, and settings access
Added a “Today’s Mission” card with daily streak, victories, Kill Meter XP, and action buttons
Made Begin Check-In and Conquer accessible near the top of the screen
Reorganized Conquer, Comfort, Commandments, and Christ into a cleaner Battle Modules section
Added Resources buttons for Bible, Verses, and Plans
Added bottom navigation for Home, War Log, Bible, and Profile
Reduced oversized stat cards to make the dashboard more compact and usable
Improved visual hierarchy while keeping the spiritual warfare / command-center theme
VERSION 3
Aug 2026 — Home v4: The Hit List
Home rebuilt a third time — from a command center into a single question: how goes the war against YOUR enemy?
Three states by soldier progress: NEW (no enemy — "Name your enemy" with a 3-step guide), ROOKIE (enemy named, no battles), VETERAN (the full hit list)
Enemy hero: the tracked sin with per-sin skull emblem, a large Days Free counter, and next-milestone progress
Shepard's Daily Brief: a daily read from the soldier's own numbers — six situations (opening, after a slip, early, approaching a milestone, entrenched, steady), each with a hand-picked verse. Deliberately built as a pure offline template engine, with the architecture reserved for a real AI-generated brief later
Tonight's Watch card pulses red when the day's report is due
Campaign dateline — "Day N of the campaign" — so every open reminds the soldier this is one long war, not disconnected days
Navigation is now five tabs: Home · Conquer · Bible · War Log · Profile
VERSION 4
SECTION 2 — CONQUER SYSTEM
The battle dashboard and sin-targeting flow — the core daily 'fight' loop. Users choose a sin, prepare, fight, and reflect.
Aug–Sept 2025 — Initial Conquer Flow Built
Sin Selection screen: Lust, Greed, Gluttony, Laziness, Wrath, Envy, Pride
Per-sin “Today’s Battle” screen with streak tracking + survey prompt + “Talk it out with Jesus AI”
Survey questions capture temptation + difficulty + preparedness, etc.
Chat integration wired to backend + OpenAI; UI includes typing placeholder
Win/Loss tracker hooked into streak count + War Log foundation
VERSION 1
Sept 30, 2025 — Conquer Dashboard + Sin Select Wheel Overhaul
Dashboard layout restructured using absolute positioning
Sin Select Wheel upgraded to a functional 7-node heptagon with colored outlines/connectors
Future-proofed for emblem swaps without breaking layout
SIN SELECT WHEEL UPDATE
DASHBOARD CREATED
Oct 25, 2025 — Conquer Flow Redesign
New dashboard metrics added
Current Streak, Longest Streak, All-Time Conquered/Unconquered, Kill Meter (XP)
“Are You Ready for Battle?” check-in (pre-fight ritual)
Yes → “Go forth and conquer this sin.”
No → “There’s more training to be done, soldier.”
Designed to emphasize preparation/consistency over shame
Sin Dossier Added
Slow the user down just enough to create intentionality
Reframe the sin as an opponent, not an identity
Give context + strategy before engagement
VERSION 2
Oct 26, 2025 — 24-Hour Survey System Polished (full flow restored)
Holographic design stabilized (balanced borders, fixed animations)
Randomized outcome messages for Conquered / Unconquered / No Encounter
Survey flow steps (end-to-end): status selection → tactical debrief → heart reflection → mission prep → “Word from Command”
Future add-ons (you can add later)
“Battle Buttons” final design pass (you noted they’re not final yet)
More battle screens: weapons inventory UI, scripture toolbelt, battle prep modules
Notifications / scheduling: trigger the 24-hour check-in exactly 24h later + reminders
Survey Check In System
SECTION 3 — WAR LOG
Purpose: command center to track battles, history, performance, and progression.
Sept 30, 2025 — War Log Hub Introduced (Major Update)
New War Log hub with 4 tabs: Calendar, Records, Stats, Achievements
Calendar = daily wins/losses visual tracker (placeholder until fully connected)
Records = logs daily battle entries + option to review Shepard conversations
Stats = framework for performance metrics (to be connected)
Achievements organized into war tiers (Basic Training, Active Duty, Elite Commander) + glowing unlock effect
Scrollable achievements layout (harder unlock as you scroll deeper)
VERSION 1
WAR LOG BUTTON
Oct 26, 2025 — Records Tab Completed
Records tab completed so users can revisit every past check-in
Each record shows: sin battled, weapons used, reflection, plan for the next fight
Explicit goal: visible progress + reread your own words + tangible day-by-day growth
Future add-ons
Calendar ↔ streaks ↔ achievements full connection (you called this out as a next step)
Stats pages: month-over-month graphs, streak distributions, relapse triggers, “most dangerous time” insights
RECORDS TAB
SECTION 4 — Shepard AI
Purpose: AI mentor who confronts, guides, and encourages users through battles.
Aug–Sept 2025 — Shepard Backend + Chat UI Integrated
Backend: Node.js + Express deployed on Render; API keys secured as env vars
End-to-end message flow verified: app ↔ backend ↔ OpenAI; chat bubbles + typing indicator experience
Sept 30, 2025 — Shepard Training + Personality Overhaul
Issue: Shepard responses were to vague and surface level.
Shepard training document uploaded/finalized with multi-sin examples
System prompt updated to be: brotherly + scripture-centered + firm/urgent (not soft), with balanced practical steps
First-time intro script created: tap-through mentor dialogue (not skippable)
Cutscene planned later with continue/exit buttons + tap-to-advance + dramatic pauses
Oct 25 2025 — Intel Briefing
Introduced the Intel Briefing concept as a core interaction pattern inside Shepard chats.
Instead of immediately responding conversationally, Shepard now opens many sessions with a structured briefing:
Battlefield Analysis (where and when the sin is most active)
Warning (clear spiritual consequences of delay or compromise)
Tactical Steps (specific, actionable obedience for today, not vague advice)
Scripture Anchor (one verse to frame the battle)
This briefing format was intentionally designed to:
Reframe sin as an external opponent, not the user’s identity
Slow the user down just enough to create intentionality before action
Shift the mindset from emotional venting → spiritual warfare and execution
Rather than feeling like “chatting with an AI,” the Intel Briefing makes each session feel like receiving mission-critical guidance before a decision point.
(Oct 28, 2025 — 2:19 AM) — Dual Shepard Personas: Visual + Behavioral Separation
Implemented a dual-persona Shepard system by fully separating training data, tone, and on-screen behavior into two distinct AI roles.
Two independent training files were created and maintained:
shepard_QA.json
A large, example-dense dataset used to train General Shepard — a conversational Christian AI for questions, reassurance, and faith exploration.
Responses prioritize clarity, explanation, and pastoral tone. Visually, this Shepard appears as a clean, open chat interface with minimal urgency — no warnings, no tactical framing — reinforcing safety and approachability.shepard_Conquer.jsonl
A focused, directive dataset used to train Battle Shepard — a tactical mentor built specifically for conquering sin.
Responses are structured, urgent, and action-oriented. Visually, this Shepard appears inside a mission-styled interface with labeled sections (Intel Briefing, Battlefield Analysis, Warnings, Tactical Steps, Scripture Anchor), reinforcing that the user is entering an active confrontation, not a casual conversation.
Dual Shepard Architecture — Persona-Separated Training Pipelines
Aug 2026 — Shepard v3: Persona Rebuild + Fireworks Migration (Major Update)
The largest Shepard upgrade since launch — the persona, the model, and the safety layer were all rebuilt, driven by evals instead of vibes.
The eval suite
Built an automated evaluation harness scoring every candidate model on: briefing format compliance, scripture citation, response length, profile utilization (does Shepard actually use the soldier's name, Days Free, and triggers?), and conduct rules
Ran a bake-off across fine-tuned GPT-3.5, Qwen, GLM, and DeepSeek — openings and full conversations scored separately
Key finding: the eval caught what mattered, but my own phone test caught what the eval missed (replies passed word caps while still reading like sermons) — so sentence-level conduct rules were added and re-verified
The migration
Production inference moved from two fine-tuned GPT-3.5 models to DeepSeek on Fireworks serverless — roughly 20x cheaper per token, faster p50 latency
Provider-agnostic model layer: OpenAI ↔ Fireworks swap via environment variables, zero code changes
Verified live on-device end to end before flipping production
Persona v3
Killed the sermon voice. Shepard now replies short (~36 words average), asks questions, and digs for root causes with the soldier instead of delivering urgency scripts
Name usage made deliberately rare via server-side injection — used once in a while, the way a real mentor would
Both modes rebuilt: Battle Shepard (tactical debrief) and General Shepard (teaching, Bible Q&A) each with their own conduct rules and evals
Code-enforced crisis referral
If a soldier spirals toward despair, referring them to a real person is no longer prompt-hoped — it's enforced in code: detect → re-prompt → append a referral floor
Result: 15/15 escalated conversations refer out, zero false triggers
Design principle: anything safety-critical gets deterministic enforcement, not model trust
SECTION 5 — Infrastructure & Dev Systems
Purpose: fast iteration + safe testing + persistent state that doesn’t wipe progress.
Oct 25, 2025 — DEV/PROD Environment Separation (Major Infra Update)
DEV_SANDBOX flag added in config/flags.js
Dev Mode saves to _DEV AsyncStorage keys; Prod saves to normal keys
Dynamic keys for battles/sins/stats implemented (e.g., @killsin/battles[_DEV])
Automatic production wipe guard added for clean “new-user testing”
DEV / PROD Sandbox Toggle
Oct 25, 2025 — DevTools Suite + Persistence Fix
Utilities: wipeDevSandbox, wipeProdData, wipeAllKillSinData, hardResetSandbox/Production
Visible “RESET SANDBOX” dev-only button on home screen
Persistence fix: hydrated flag prevents streak/XP resets; resetStateToDefaults centralized
Per-sin + global stat tracking added (totalConquered, totalUnconquered, current/longest streak, killXP, level)
Aug 2026 — Model Layer, Evals as Regression Tooling, Secret Hygiene
Provider-agnostic inference config: model, provider, and API base all env-driven — production can swap between OpenAI and Fireworks without touching code
Prompt version stamp logged on every request, so production behavior is always traceable to an exact prompt version
The Shepard eval suite doubles as regression tooling — any prompt or model change gets scored before it ships
Full secret audit across recent commit history (clean), API key rotation, and verified local dev loop: local backend + Expo Go on-device via LAN for testing changes against the real app before deploy
SECTION 6 — Visual Systems and Progression
Purpose: make growth visible and motivating through ranks + emblems
(Oct 26, 2025 — 9:17 PM) — Ranking Emblem System Progress
Designed a rank-based emblem system to make spiritual growth visible, motivating, and durable over time.
Each emblem represents a stage of discipline and consistency, not one-off success. Progression is driven by sustained streaks and repeated victories, reinforcing long-term obedience rather than short bursts of effort.
A 10-tier ladder was defined, with each rank symbolizing a deeper level of responsibility and self-mastery:
Early ranks (e.g., Recruit, Foot Soldier) reward showing up consistently
Mid ranks (Warrior, Knight, Captain) represent reliability under pressure
Upper ranks (Commander, Conqueror, Legend) reflect habitual victory
Sin Slayer serves as a capstone emblem — a rare, aspirational achievement signaling mastery over a specific sin
Emblems are designed to feel earned, permanent, and identity-shaping, avoiding reset-heavy mechanics that punish failure.
Ranking Emblems
Final Emblem
Jul 2026 — Typography System
Built a central font system with four shipped font families and six named presets (sacred, conquer, comfort, shepherd, achievement, onboarding) — each preset maps every text role (title, body, caption, button, nav)
Rolled out across the entire Conquer section: dashboard, all four War Log tabs, sin dossier, debrief, battle survey
The detail I care most about: scripture gets its own treatment — the sacred preset renders verse text in Lora with adjusted line-height, because the most important words in the app should be the most readable
Jul 2026 — Home v2: The Command Center
Rebuilt Home from a menu screen into a tactical mission dashboard: rank + level header, Today's Mission card (streak, victories, Kill Meter XP), Conquer-primary battle modules, Shepard status card
New Profile and Settings screens; dev controls moved off Home into Settings
Pinned bottom navigation (Home / War Log / Bible / Profile) anchored via safe-area
Unified the tactical grid background across Home and the Conquer dashboard using a shared GridOverlay — then fixed card fills so the grid reads as embedded in the UI, not floating behind it
Aug 2026 — Progression Became Real (Major Update)
Until now, progression was cosmetic. This update made it a readout of the actual fight.
10-tier rank ladder (Recruit → Sin Slayer) wired to a real XP curve (100 → 2000 per level)
All 22 achievements now compute from real battle history through a pure evaluator — First Victory, Hot Streak, Perfect Week, Resilient, Overcomer, General of Faith — across Basic Training / Active Duty / Elite Commander tiers
New fourth tier: Days Free achievements (One Week, One Month, Ninety Days, One Year)
Achievement medals replaced placeholder images with in-app vector medals
War Log upgraded into a journal of the war: per-enemy filter chips driving Calendar, Records, and Stats together, an 8-week Momentum Chart, and a Days Free readout per tracked enemy
Design principle: the rank on Home, the achievements in War Log, and the Days Free counters all read from the same battle log — nothing is decorative, nothing is fake
SECTION 7 — Enemies & Nightly Debrief
Purpose: turn vague sin categories into named, tracked opponents — and rebuild the daily ritual on top of them.
Jul 2026 — The Enemies System (Major Milestone)
A soldier no longer fights "Lust" in the abstract — they declare a specific Enemy: the concrete form a sin takes in their life, tracked under one of the seven categories
Each Enemy carries a Days Free counter and a grace-framed "report a slip" flow
New EnemiesScreen and EnemyDetailScreen, plus a FRONT LINES card on the Conquer dashboard showing active enemies at a glance
SoldierProfile — cross-session memory: name, WHY, per-enemy record, vulnerable hour, known triggers, prior debriefs, and Days Free are now injected into every Shepard conversation — so the mentor stops resetting each session and actually knows the soldier over time
Jul 2026 — Nightly Debrief
The daily ritual, rebuilt: each night ends with a debrief per enemy — Held the Line (Days Free continues) or Slipped (counter resets — framed as a battle lost, never a verdict on the man)
Marks the night complete, updates the streak, and stores a per-enemy summary that feeds both the War Log and Shepard's context
Built on the check-in system's night-completion machinery — the ritual survived; the delivery mechanism changed
Aug 2026 — Under Attack: Hold the Line (Major Milestone)
Every surface in Kill Sin helped before temptation (dossier, briefing) or after (debrief, war log). Nothing helped during — the 30-to-90-second window where the fight actually happens. This closes that gap.
A red UNDER ATTACK entry point on Home and the Conquer dashboard — reachable in one tap when the urge is live
The flow is deliberately deterministic-first, AI-second: the soldier's own WHY full-screen (written when he was strong, shown when he's weak) → a hold-the-line interrupt → one concrete physical action (leave the room, phone away, go outside) → then, only if still struggling, a live line to Shepard who already knows the context is an active urge
Both outcomes are intel: holds are logged and earn XP — resisting now counts for something visible, not just falls counting against you
Design principle: don't make "open an AI chatbot" the intervention. Delay and physical interruption are the evidence-backed moves; AI handles the messy human conversation that remains after them
SECTION 8 — BIBLE SYSTEM
Purpose: put the actual Word inside the app — offline, readable, and wired into progression.
Aug 2026 — Bible System Shipped (Major Milestone)
The content layer
The entire Bible (World English Bible translation) bundled in-app as structured JSON — 66 books, all 1,189 chapters. Public domain, no licensing, no network calls: it works on a plane
The Version tab is honest about scope: WEB marked ACTIVE, other translations listed as COMING rather than faked
Reading experience
Five tabs: Read · A–Z · Highlights · Notes · Version
Chapter reader with tappable verses — tap any verse to highlight or attach a note
Auto-completion tracking: a chapter counts as read via an explicit "Mark as Read" or automatically when you scroll to the bottom
Book detail pages with Summary / Campaign / War Log views — summaries written in the app's voice (battle report, enemy engagement, strategic lessons)
Scripture Campaign — the progression layer
A Scripture Campaign card tracks overall % of the Bible read, chapters read, books started, books cleared, and a "continue where you left off" shortcut
Full Campaign screen: separate Old and New Testament progress, recent chapters, and 7 reading achievements — from First Chapter all the way to Bible Cleared (all 1,189 chapters)
All progression derived from existing reading data — zero new storage keys
The design decision that matters
The Bible section was deliberately pulled out of the game UI. Everywhere else, Kill Sin is a war room. The Bible is a reading room — its own quiet, warm, self-contained theme (near-black base, off-white text, a single red accent for headers and progress only). Glowing borders removed entirely
The rationale: scripture is not a game surface. The theme is isolated in code so the war-room aesthetic can't leak in
August 2026 — Bible System Update
Four translations bundled fully offline — WEB, KJV, BSB, ASV: 66 books, 1,189 chapters each, ~31,102 verses, 17MB of structured JSON, zero network calls
Every highlight and note carries a translation stamp and text snapshot — a WEB highlight has no KJV equivalent because the versifications genuinely differ (WEB's Romans has one extra verse slot; preserved intentionally rather than papered over)
All 66 book summaries theologically reviewed and locked against regeneration, with eight permanent doctrinal guardrails hard-coded into the summary pipeline
Ask AI Shepherd moved into the Bible tab — general-mode Q&A lives where the Word lives
(Nov 19, 2025 — 1:53 AM) — Created the Check-In System (Huge Build)
What exists now (core components)
Voice-powered morning & night check-in survey
Personalized Check-In Dashboard
Dynamic survey generation engine
Dedicated Check-In Flow Navigator
First-time onboarding survey
Record/store/review daily discipline data
A. Voice-Powered Check-In Survey (details)
Voice input (app listens), transcription to text, editable responses
Dynamic question sets for morning vs night
Stored with timestamps in context + AsyncStorage
Auto-generated summaries recorded per check-in
Streak tracking updates via morning/night completion
B. Check-In Dashboard (what it contains)
Shepard status panel, streak indicator, morning/night mission, objective of week
Survey editing/customization + consistency meter (14-day visualization)
Yesterday’s summary/logs + “Your WHY” panel
Dynamic insights placeholder (future behavioral AI)
C. Dynamic Survey Builder
Generates questions based on chosen survey style (minimal/balanced/elite)
Optional modules (faith, lust, health, productivity, etc.)
Splits into morning vs night; saved to context; loaded by engine
D. First-Time Onboarding Flow
Welcome screen → Your WHY → style selection → modules → confirmation → transition to dashboard
Dev-mode override forces onboarding each time for testing
E. Navigation Architecture
New CheckInFlowNavigator keeps onboarding isolated, prevents hijacking rest of app, ensures clean transitions
Why it matters
Check-in is the daily discipline ritual; dashboard is the command center
Voice interaction increases immersion/engagement and reduces friction
Your WHY reinforces motivation; surveys users help design increase stickiness
Progress becomes visible data (streaks/meters/summaries/logs)
SECTION 9 — Check-In System (RETIRED — v2)
Purpose: the daily discipline ritual (“spine of the app”)—morning/night voice check-ins, dashboards, and insights.
Status: Archived for v1 — returning in v2.
In July I made the call to gate the voice check-in behind v2. The honest reason: the voice layer required a second OpenAI API key exposed in the client bundle, on top of the Shepard backend — real cost and real complexity for a v1 feature. So the entry point was removed and the voice layer stripped, but the machinery (flow navigator, survey engine, context) is archived intact in the codebase.
The important part: the ritual this system existed to create shipped anyway. The daily accountability moment now lives in the Nightly Debrief (Section 7), built on the Enemies system — typed instead of voice, on top of the same night-completion machinery. Check-in wasn't cut for lack of belief; it was cut because v1 needed the ritual, not the microphone.
(Original build history below, preserved:)
CHECK IN DASHBOARD VERSION 1
VOICE POWERED CHECK IN SURVEY VERSION 1
SECTION 10 — LAUNCH HARDENING & FIRST DEVICE BUILD
Purpose: move Kill Sin from feature development to release-grade — driven by audit, enforced by machinery.
Aug 2026 — The Release Readiness Pass
Commissioned a full audit of the tree against a TestFlight bar: 29 issues ranked P0–P2, every finding with file/line evidence. Highest-severity find: the app's access token would silently resolve empty in cloud builds — every AI message would fail, invisible in local dev. Found by audit, not by shipping it.
Implemented in 4 phases, ~30 commits: build config; dev isolation (dev flags derived from DEV so release bundles dead-code-eliminate them — verified by grepping compiled Hermes bytecode); a fail-closed server (refuses to boot with missing config, tripwire against retired models, /health observability); and failure visibility (storage-corruption quarantine, request timeouts with typed errors, error boundaries).
Testing went from zero automated tests to 510 assertions + a release-flag guard that run inside every build — a build that violates dev isolation now fails instead of shipping.
Deliberately deferred the riskiest fix (a timezone day-key migration touching six call sites, where two existing bugs currently cancel each other out) to a reviewed migration plan rather than a late-night patch.
Aug 20, 2026 — First build on real hardware
Enrolled in the Apple Developer Program and shipped the first signed iOS build the same night. First build failed at pod resolution — a stray direct dependency conflicting with its own consumer's version pin, invisible for a year in Expo Go because Expo Go never compiles native code. The fix also caught a missing font dependency that would have crashed launch on device. Lesson encoded: first-time integrations fail at the seams, not the centers.
Smoke test on device: onboarding, dev tools provably absent, real 24-hour battle clock — all green. Shepard failed with a 404: Fireworks had superseded the production model with a new snapshot. Diagnosed in minutes from /health + live logs (both built earlier that day), fixed with an env var, no rebuild. The observability paid for itself within twelve hours of existing.