All About Me
 Old Crap
 What's Going On
   Important News
   Kitty Porn

 Things I can't live without

> Cars
> Computers
> Food/Recipes
> Humor
> Music
> Privacy
Expand your vocabulary and feed a hungry person!

Download this file

Article 1952 of misc.wanted:
>From: eric@snark.UUCP (Eric S. Raymond)
Newsgroups: comp.unix.questions,misc.wanted,rec.arts.sf-lovers,rec.humor
Subject: UNIX Wars! (was: Re: Wanted - DEC WARS)
Summary: Here's an 'enhanced version' I came up with once
Message-ID: <175@snark.UUCP>
Date: 18 Sep 87 18:08:20 GMT
Organization: Network 23 AI Research Group

If anyone knows who wrote the original 'DEC Wars', please tell me...I'd like
to try to publish this thing, properly giving credit to the originator.

    #        # #        #    ###    #        #                    #        #        #        ######    #####
    #        # ##        #        #        #    #                        #    #    #    # #    #        # #        #
    #        # # #    #        #            # #                        #    #    #    #    #    #        # #
    #        # #    #    #        #            #                            #    #    # #        # ######    #####
    #        # #    # #        #            # #                        #    #    # ####### #    #                #
    #        # #        ##        #        #    #                        #    #    # #        # #        #    #        #
    #####    #        #    ###    #        #                        ## ##    #        # #        #    #####

                                                        (Version 1.1)

    A long time ago, at an installation far, far away...
    It    is    a time of intra-system war,    as forces of the    User    Alliance
struggle to break the iron grip of the evil Admin Empire.    Now, striking
from a hidden directory,    they win their first victory.
    During the battle,    User spies manage to snarf source of the Empire's
ultimate weapon; the dreaded "rm-star", a privileged root program with the
power to destroy an entire file system at a keystroke.
    Now,    hotly    pursued by the Empire's sinister audit    trail,    Princess
LA36    races    aboard her shellscript -- custodian of the stolen    listings
that can save her people and restore freedom and games to the network...

    As we enter the scene, an Admin multiplexer is trying to kill    a User
ship.    Many of their signals have gotten through, and RS232 knows that a
core    dump is imminent.    They have scant microseconds to fork off a    new
process    and put megabytes of virtual space between themselves and their
implacable foes.    His companion, 3CPU, follows him only because he seems
to know where he's going...

    "Oh, I just \fIknow\fR I'm going to regret this!" cried 3CPU as he followed
RS232    through    the access pipe.    Quickly RS232 closed the read end    and
execl'd,    and their new craft detached itself from the burning shell    of
the ship.

    The    Admin commander was feeling quite pleased with the    progress    of
the attack when his XO called out.
    "Another process just forked, sir. Instructions?"
    "Hold    your    fire -- that last power failure must have caused a    trap
through zero.    It's not using any cpu time,    so don't waste a signal    on

    A    short while later the infamous Lord Vadic himself    strode    through
the    still-smoldering wreckage of the User ship,    followed closely by    a
nervous commander.
    "We can't seem to find that data file anywhere,    Lord Vadic.    Perhaps
it was deallocated when..."
    "What about that forked process?" Vadic growled.    "It could have been
pausing,    holding    a    channel open.    If any links are left I    want    them
removed or made inaccessible. Search the entire system at nice -20 until
it is found!"

    Meanwhile,    the    two droids' tiny process dove headlong    towards    the
only nearby disk.
    "Are you \fIsure\fR you can ptrace this thing without aborting it?" queried
3CPU.    "Its relocation bits were almost all stripped during the    attack,
and I never was any good at patching binaries..."
    As    RS232    was about to reply their process reached its endpoint    and
terminated    abruptly,    dumping them in the midst of a large    unallocated
region on the unknown volume.
    Many random seeks later they trudged up to the looming wreckage of    a
deallocated i-node.
    "Shelter!"    croaked 3CPU,    but RS232 had barely begun to emit a    NACK
when    a horde of dwarfish code fragments swarmed out of it to    overwhelm
them. They had been captured by Glitchas.

    Enter    Luke    Vaxhacker,    bartering with the Glitchas for    replacement
parts for his uncle.    They tried to sell him 3CPU, but the 'droid didn't
know protocol for an 11/40 under RSTS,    so Luke would need some kind    of
conversion hardware.
    "How    about this little RS232 unit?" said 3CPU "I've interfaced    with
him many times before and he's excellent at keeping his bits straight."
    Luke    was pressed for time,    so he took 3CPU's advice.    The    Glitchas
wanted    to barter some more,    but the three left before getting    swapped
    RS232, however, wasn't the type to stay put without retaining screws.
He promptly scurried off into the empty disk space.
    "Oh,    great!"    said Luke "He'll probably map himself into a bad block
somewhere. I guess we'd better go after him."
    Hours later the two traced him to the home of old PDP-1    Kenobi,    who
was busily running a diagnostic on the little RS unit.
    "Is    this    droid    yours?    His status    registers    are    stuttering    and
someone's done some \fIodd\fR things to his interrupt lines. Leaving something
like    this on-line is just asking for downtime -- but I think I may have
him fixed for now."

    Later    that    evening,    during a futile attempt to interface RS232    to
Kenobi's    Asteroids    cartridge,    Luke    accidentally    crossed    the    small
droid's CXR lead with his Initiate Remote Test.    A projector crackled to
life, casting a hologram of a young lady with her hair done up like twin
Danish pastries imploring help from some General OS/1 Kenobi.

    "Darn," mumbled Luke "I'll never get this Asteroids game worked out."
    "Why,    that's    the    Princess!" 3CPU said.    Luke peered at    the    image
    "No,    that's    a    modified Steinburg dither with    anti-aliasing.    Nice
sculpted surfaces..." Kenobi interrupted Luke with a frown.
    "Luke,    this message changes things. Listen..."
    Kenobi    seemed to think there was a possible threat to Luke's    $HOME.
If the Admin troops were indeed tracing this 'droid,    it was likely they
would more than just charge for cpu time.
    They    sped    off to warn Luke's kin (taking a relative path)    only    to
find a vacant directory.

    "Take your father's bytesaber,    Luke." Kenobi said. "You will need to
learn the ways of the Source now."
    "The ... Source?" Luke queried, wide-eyed.
    "The    Source -- the cosmic template of the System,    within which    all
knowledge    and power can be had.    But you must always beware of the Dark

    Later,    after a short skim across the surface in Luke's flying    read-
write    head,    PDP-1 had them stop at the edge of the cylinder containing
    "Unix-to-Unix    Copy Program" said PDP-1.    "You may never see    a    more
wretched hive of bugs and flamers. We must be cautious."

    As    our    heroes'    process    entered /usr/spool/news it was    met    by    a
newsgroup of Admin protection bits.
    "State your UID!" commanded a burly syscall.
    "We're running under /usr/guest" said Luke.    "This is our first    time
on the system."
    "Let's see some temporary privilege bits, please."
    \fI"This isn't the process you are looking for,"\fR Kenobi said softly.
\fI"We can go about our business."\fR Several bits momentarily pulled low.
    "You're free to go about your business. MOV along now!"

    PDP-1, Luke and the droids made their way through a long and tortuous
nodelist    (...!musocs!micomvax!philabs!linus!husc6!rutgers!cbmvax!snark)
to    a dangerous netnode frequented by hackers and only seldom polled    by
the    minions of Admin.    As Luke stepped up to the crossbar PDP-1 went in
search of a suitable server.
    Luke had never seen such a collection of device drivers.    Long    ones,
short ones, ones with stacks; EBCDIC converters, local-net handlers, CRT
drivers, routines for archaic printers. A CAT interface twitched pointed
ears at him.
    "#@{&*^%^$$#@ ":><?><," transmitted a particularly unstructured piece
of code.
    "He doesn't like you." decoded his coroutine.
    "Er...sorry..." replied Luke, beginning to backup his partitions.
    "I don't like you either. I am queued for deletion on 12 systems."
    "I'll be careful." Luke said nervously.
    "You'll be deallocated!" snarled the coroutine.
    \fI"This    little    routine    isn't worth the overhead..."\fR    murmered    PDP-1
Kenobi, overlaying into Luke's address space.
    "This    little    routine    isn't    worth    the    overhead."    repeated    the
coroutine dazedly.
    "^%#%#@$&^%&*&*&^%^#$$%%^^&%^#@#@$%^(*&^^###%^^!!!"        encoded        his
companion as it attempted to overload Kenobi's segment protection.    With
a    stroke    of his bytesaber Kenobi dyked out    the    offending    code.    The
coroutine retreated hurriedly. Kenobi turned to Luke.
    "I think I've found an I/O handler that might suit us."
    "The name's Con Sole0" said the routine next to PDP-1. "I hear you're
looking for some relocation."
    "Yes indeed." said PDP-1 "if you've got fast enough hardware. We must
get off this device."
    "Fast hardware? The \fIMilliamp Falcon\fR has made the ARPAgate run in less
than    twelve netnodes!    Why,    I've even outrun cancelled messages.    It's
fast enough for you, old version."

    "Fast hardware?" said Luke unbelievingly    "That thing is a paper-tape
reader!!"    He might have grown up in an out-of-the-way terminal    cluster
where    the natives only spoke BASIC,    but he knew an ASR-33 when he    saw
    "It    needs an FIA conversion at least." sniffed 3CPU,    who (as usual)
was trying to do several things at once.    Lights flashed in Con    Sole0's
eyes as he whirled to face the parallel processor.
    "I've    switched    a few jumpers.    The \fIMilliamp Falcon\fR can run    current
loops around any of Admin's TTY fighters. She's fast enough."
    "Who's your copilot!" inquired Luke,    eyeing the hairy hulk that    had
just shambled out of the \fIFalcon\fR to join the group."
    "Oh. Meet Sixpacca, my Bookie."
    The    creature emitted an enormous belch and gesticulated wildly    with
a wad of tip sheets clenched in one fist.    Luke eyed the beercan in    the
other dubiously.
    "Er,    isn't    he dr-" Suddenly RS232 emitted an ear-splitting \fIfeep\fR and
began    to    chitter wildly.    They turned to see an    Admin    command    group
riding the local bus directly at them.
    "That's    a    shutdown    sequence    if I    ever    saw    one!"    shouted    Con,
sprinting    into    the ship with the others close behind.    "Crank    up    the
sysclock, Brewie!"
    "O.K.    Con."    Luke said grimly "You said this crate was fast    enough.
Get us out of here."
    "Shut up,    kid,    you bother me.    Initialize this heap, Brewie -- I'll
try to keep their buffers full."
    As his Bookie computed the vectors into low core, spurious characters
flashed around the \fIMilliamp Falcon\fR.
    "They're    firing at us!" shouted Luke. "Can't you do anything?"
    "Making the jump to system space takes time,    kid." Con growled. "One
missed    cycle and you could come down right in the middle of a    pack    of
stack frames!"
    Bright    chunks    of position-independent code flashed by as    the    ship
jumped    through    the    kernel page tables.    The group emitted a    sigh    of
relief as they indirected into free space.

    Meanwhile, on a distant page in user space...

    Two    Admin    troopers    ushered Princess LA36 into    a    conference    room
behind Lord Vadic.
    "Moff Tarchive" she spat. "I should have expected to find you hanging
on Vadic's aux cable.    I recognized your unique pattern when I was first
brought aboard." She eyed the 0177545 tattoed on his header coldly.
    "Charming to the last." Tarchive observed smoothly.    "Vadic, have you
retrieved any information?"
    "Her    resistance    to the logic probe is considerable," Vadic    rasped.
"Perhaps if we boosted the supply voltage..."
    "You've had your chance. Now I would like the Princess to witness the
test    that will certify this module fully operational.    Today we    enable
the    -r    beam    option,    and    we've    chosen    the    Princess's    $HOME    of
/usr/alderaan as the primary target.
    "No!    You can't! /usr/alderaan is an unprotected public directory. We
have no backup tapes! You can't..."
    "Then    name    the rebel i-node!" Tarchive snapped.    A voice    announced
from a hidden speaker that they'd arrived in /usr.
    "2317"    she    whispered.    "They're    on    /dev/rm5,    i-node    2317.
/mnt/dantooine. She turned away.
    Tarchive sighed with satisfaction.    "There,    you see, Lord Vadic? She
can be reasonable. Proceed with the operation."
    It took several clock ticks for the words to penetrate.    "What?"    the
Princess gasped.
    "/dev/rm5 is not a currently mounted file system." explained Tarchive
"We    require a more visible target to demonstrate the power of    the    rm-
star.    We will,    of course, mount an attack on /mnt/dantooine as soon as
    As she watched in horror Tarchive typed "ls -la" on a nearby    terminal.
The screen showed
    \fI.:    no such directory\fR
    Abruptly the Princess double-spaced and went offline.

    Meanwhile, the \fIMilliamp Falcon\fR hurtled through free space...

    Con Sole0 finished checking the control and status registers, finally
satisfying    himself    that    they'd lost the Admin bus signals    as    they'd
passed    the terminator.    An irritable belch from Sixpacca disturbed    him
not    at all;    he knew the Bookie got grouchy when losing at    chess,    and
RS232 had just caught him in the Fischer set with a seven-ply search.
    Across    the room Luke was too busy practicing bit-slice technique    to
notice the commotion.
    "On    a    word    boundary,    Luke," said PDP-1 "Don't just    hack    at    it.
Remember,    the bytesaber is the ceremonial weapon of the Red-Eye Knight.
It    is used to trim offensive lines of code.    Handwaving won't    get    you
anywhere. Attune yourself with the Source."
    Luke    turned    back towards the drone humming in the air    beside    him.
This time his attack complemented its actions perfectly.
    Con Sole0 was not impressed.    "Forget this bit-slicing stuff. Give me
a good old PROM blaster any day!"
    "Glork!" said PDP-1 indistinctly. He looked momentarily vacant.
    "What's wrong?" asked Luke.
    "Strange. I thought I felt a disturbance in the /src. It's gone now."

    "We're    coming    up on user space!" called Sole0 from    the    CSR.    They
slipped safely through stack frames and emerged in the new context, only
to find themselves bombarded by floating freeblocks.
    "What the..." gasped Sole0.    The Bookie belched unhappily. The screen
    \fI/usr/alderaan: not found\fR
"This is the right i-node,    but it's been cleared!    Brewie,    where's the
nearest file?"
    The    Bookie was beginning to belch a reply when he was interrupted by
a bright flash off to the left.
    "Admin TTY fighters!" Con shouted "A whole DZ of them. Where are they
coming from?"
    "The    host system can't be far." said PDP-1 "They've all    got    direct
EIA connections."
    As Sole0 began evasive action the ship lurched suddenly. Luke noticed
that the link count was 3 and climbing rapidly.
    "This    is    no    ordinary file..." murmered Kenobi "Look    at    that    ODS
directory structure ahead! They seem to have us in a tractor feed."
    "There's no way we can unlink in time." said Sole0 "We're going in."

    The    \fIMilliamp Falcon\fR was swiftly pulled down to the open collector of
the Admin module.    Lord Vadic surveyed the battered ship as Admin Storm-
Flunkies searched for passengers.
    "\fIls\fR    scan    shows no one on board,    sir" was    the    report.    Vadic    was
    "Send a fully equipped \fIncheck\fR squad aboard.    I want every location in
that thing searched." He stalked away.

    Aboard    the \fIFalcon\fR .Luke was puzzled.    "They just walked    in,    looked
around, and walked out...why didn't they see us?"
    .Con    smiled.    "Old munchkin trick.    See that period in front of your
    .Luke spun around in time to glimpse the decimal point. "Huh? Where'd
that come from?"
    "Spare    part    from the last time I tinkered with    the    floating-point
accelerator" said .Con.    "Handy for smuggling blocks across file    system
boundaries,    but    I never thought I'd have to use them on    myself.    They
aren't going to stay fooled for long,    though.    We'd better figure a way
out of here."
    "I    can sneak us into their private space during the next maintenance
period"    said    PDP-1 "We'll have to find out how to    unlink    the    \fIFalcon\fR
before we can escape."

    Some    time    later    our heroes catfooted their way    through    an    empty
section of the structure.
    "Find us a terminal." whispered PDP-1. Con nodded and poked his PROM-
blaster around a corner.
    You    are in the Hall of the Mountain King,    with passages    off in all
    A large green fierce snake bars the way!
    "Oops!    Wrong turn." Con muttered.    They took the opposite direction.
Suddenly    marching feet sounded at the other end of the    corridor.    They
ducked through the nearest door.
    The lone StormFlunky in the room barely had time to register surprise
before Con's blaster de-rezzed him.
    "That's funny..." Luke said "I wonder why he was carrying an axe?..."
    "Look! We're in luck!" said 3CPU. "He was logged in!".
    "Don't just stand there,    Kenobi,    \fIsu\fR it!    said Con eagerly.    The old
Red-Eye    stepped    up    to    the keyboard.    They watched    as    he    began    to
infiltrate the Admin software. Some minutes later...
    \fIYou have new mail\fR
    "Is that an error?" Con said.
    "%SYS-W-NORMAL...I don't think so. Someone here must know me -- but I
can't    stop to investigate that now.    I've found the i-node they've tied
the    \fIMilliamp Falcon\fR to.    I'll have to slip in and patch    the    reference
count, alone." He disappeared through a nearby exit().
    Meanwhile,    RS232 had found a serial port and gone on-line.    He began
to chitter furiously.
    "He    keeps    saying `She's here,    she's here!'." explained 3CPU "I    do
believe    he    means    Princess    LA36.    She's being    held    on    one    of    the
privileged levels.
    Luke remembered sculpted curves. "We've got to rescue her!"
    RS232    flashed a complete structure chart of the Admin module on    the
terminal screen. Four heads bent intently over the diagram.
    "I think I see a promising access method" said Luke "...through here.
Con,    you    and    I and Sixpacca will knock out a couple of    Admin    Storm-
Flunkies    and    use their uniforms.    We'll keep a channel open    to    these
    "...and get terminated as soon as their security catches wise." broke
in Sole0    "Oh well -- I guess I don't have much of a choice."
    RS232 twittered reproachfully at him.    A planning phase or two    later
they    slipped    into    the    corridor again,    with Luke    clad    in    the    ex-
StormFlunky's uniform.

    "So far,    so good..." whispered Luke as the party came up on the last
turn    in their route.    "...but 3CPU told us there'd be two guards posted
around this corner."
    "Sixpacca still doesn't have a uniform!" Con hissed.
    "That's O.K -- I've got an idea. Listen..."
    A    minute later the two walked boldly around the corner    towards    the
two guards, Sixpacca held between them and rumbling plaintively.
    "Good day, eh?" said the first guard.
    "How's it goin', eh?" said the second. "Like, what's that, eh?"
    "Control transfer from block 1138,    dev 10/9, one for the brig." said
Con, voice muffled by the StormFlunky mask. "Caught him drunk and disor-
derly -- commander said to bring him down here to cool off."
    "Take off, it is not!" said the first guard. "Nobody told \fIus\fR about
it, and we're not morons, eh?"
    The    Bookie suddenly emitted a gargantuan belch,    surged out    of    the
grip    of    his quondam captors    and began hurling beercans in all    direc-
    "Look out,    he's \fIloose\fR! yelled Con. He and Luke started blasting ROMS
left and right.    The guards had no time to catch on before the beams hit
    "Quickly,    now" said Con "which buffer is she in?    It won't take long
for    the    Admins..." the intercom interrupted him,    so he took    out    its
firmware with a short blast " zero in on that commotion."

    Minutes    later Luke found the interface card he'd been    looking    for.
The    three followed the cables to a soundproof enclosure.    He lifted the
lid to peer inside.
    "Aren't you a little slow for FCL?" printed Princess LA36.
    "Wha?    Oh,    the Docksiders." He took off his shoes (for industry) and
explained "I've come to relocate you. I'm Luke Vaxhacker."
    Suddenly,    forms began to burst all around them. "They've blocked the
queue!" shouted Sole0. "There's only one way out of this stack!"
    "OVER    HERE!    said LA36,    printing with    overstrikes.    "THROUGH    THIS
LOOPHOLE!" Luke and the Princess disappeared into a nearby feature.
    "Belch!"    said Sixpacca dubiously,    obviously reluctant to    trust    an
Admin oversight.
    "I    don't    care how crufty it is!" shouted Con,    pushing    the    Bookie
toward the crock. "BLT yourself in there pronto!"
    With    a last blast that de-rezzed two StormFlunkies Con joined    them,
only to wince in dismay.    The "feature" had landed them in the middle of
a    garbage-collection    area.    Data chunks that hadn't been    accessed    in
weeks floated in pools of decaying bits.
    "Bletch!"    was    Con's    first comment.    "And foo and    barf!"    was    his
second.    The Bookie looked as though he'd just payed off a 555-to-1 long
shot. Luke was polling the garbage for useful items.
    "What's this?" He dusted off a flat black box with a panel display on
one side and \fIDon't Panic\fR in large friendly letters on the others.
    "This can't possibly help us now." he said,    and tossed it aside. The
Bookie was about to lay odds on it when he disappeared.
    He    popped up across the pool,    shouting "This is no feature,    it's a
bug!" and promptly vanished again.

    Con and the Princess were close to panic when Luke reappeared.    "What
happened?" they queried concurrently.
    "I don't know!" Luke gasped. The bug just automagically dissolved, as
far as I could tell. Maybe it hit a breakpoint."
    "I don't think so." Con said.    "Look how the pool is shrinking.    I've
got a bad feeling about this..."
    The    princess was the first to catch on.    "They've implemented a    new
compaction algorithm!" she exclaimed.
    Luke    remembered    their channel to the 'droids.    "RS232 -- shut    down
that recursion, quick!"
    Back in the control room RS232 searched the process table for a    LISP
interpreter.    "Hurry!"    said 3CPU.    "Hurry,    hurry!" added his other two
processors.    RS232 found the LISP, interrupted it, and altered the stack
frame to allow a normal return.
    "Scramble    as many local control paths as you can from there and head
back to the ship." Luke ordered. "We've got the Princess!"

    Meanwhile,    PDP-1    made    his way deep into the core of    the    rm-star,
using    his ability to manipulate label_t to slip from context to context
undetected.    finally he caused a random trap and (through nofault of his
own) arrived at the central i-node table.
    Activity there was always high, but the Spl6 sentries were too secure
in their belief that no mere user could interrupt them to notice the bug
that    PDP-1 introduced.    He twiddled the i-node and device numbers on    a
passing    input,    carefully    maintaining    parity,    to free    the    \fIMilliamp
Falcon\fR.    They    would    be    long    gone before    the    corrupted    i-node    was
    He    began traversing module structures towards the    subprocess    where
the    \fIFalcon\fR    had been grounded.    During the context switch he    felt    his
priority drop.    "That's not nice!" he muttered, then recognized the dark
shape before him.
    "I have waited a long time for this event,    PDP-1 Kenobi!" rasped Dec
Vadic. "We meet again at last; the circuit is closed."
    They    looped several times,    locking bytesabers.    Mesmerized    by    the
sight,    the    few    StormFlunkies    nearby    failed    to    notice    Luke,    Con,
Sixpacca,    the    Princess    and the droids until they'd nearly gained    the
\fIFalcon's\fR    input port.    A brief firefight blazed as the six hurled    them-
selves    into the ship,    but PDP-1 and Lord Vadic seemed too absorbed    in
their duel to notice.    Luke paused at the port,    his gaze riveted on the
pair. He gasped; was that phase jitter he saw around the old version?
    "If    my blade finds its mark" Kenobi warned "you will be resolved    to
your    component bits -- but if you slice me down I will only gain compu-
ting power."
    "Your    documentation    no    longer confuses    me,    old    version!"    Vadic
rasped.    "My    status    is    bus-master now!" With a    sweeping    stroke    his
bytesaber    sliced    through Kenobi's declaration list.    As    PDP-1's    main
body shimmered away Vadic noticed his UID go negative.    Odd, he thought,
since UID's are unsigned...
    Vadic    whirled    to    face    the \fIFalcon\fR just as    the    others    dragged    a
protesting Luke into the ship.
    "We will meet again...Luke!" he rasped softly to himself, as the ship
blasted free.

    As    the    \fIMilliamp Falcon\fR hurtled away from the rm-star,    the    droids
were uncharacteristically silent,    and Princess LA36 printed    comforting
messages    for    Luke.    He    was unconsolable,    hung from the loss    of    his
friend. But strangely, it seemed as though he heard PDP-1's voice in the
distance, saying

May the Source be with you!

Apologies for the half-hearted nroff formatting...I originally wrote this under
(oh, the embarrassment! :-)) Wordstar.--
            Eric S. Raymond
            UUCP:    {{seismo,ihnp4,rutgers}!cbmvax,sdcrdcf!burdvax,vu-vlsi}!snark!eric
            Post:    22 South Warren Avenue, Malvern, PA 19355        Phone: (215)-296-5718

(© 1996-2010. Please don't link to images here; bandwidth costs money. Thanks.)