( scratchpad ) USE: tools.deploy ( scratchpad ) "test" deploy { "association.cmd/test" "-i=/data/factor/temp/staging.compiler.image" "-resource-path=/data/factor/" "-run=tools.deploy.shaker" "-vocab-manifest-out=/data/factor/temp/vocab-manifest-test" "-deploy-vocab=test" "-deploy-config=/data/factor/temp/deploy-config-test" "-output-image=association.cmd/test.image" "-pic=0" } Loading resource:basis/tools/deploy/shaker/shaker.factor Loading resource:basis/tools/deploy/config/config.factor Deploying test... Loading /data/factor/temp/deploy-config-test Loading resource:work/test/test.factor Loading resource:basis/formatting/formatting.factor Loading resource:basis/calendar/calendar.factor Loading resource:basis/threads/threads.factor Loading resource:basis/boxes/boxes.factor The die word was called by the library. Unless you called it yourself, you have triggered a bug in Factor. Please report. Starting low level debugger... Basic commands: q -- continue executing Factor - NOT SAFE im -- save image to fep.image x -- exit Factor Advanced commands: d -- dump memory u -- dump object at tagged . -- print object at tagged t -- toggle output trimming s r -- dump data, retain stacks .s .r .c -- print data, retain, call stacks e -- dump environment g -- dump generations data -- data heap dump words -- words dump tuples -- tuples dump refs -- find data heap references to object push -- push object on data stack - NOT SAFE code -- code heap dump READY ==== DATA STACK: "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" "test" T{ continuations:condition T{ source-files.errors:source-file-error T{ lexer:lexer-error 9 12 " formatting" T{ vectors:vector { T{ lexer:lexer-parsing-word syntax:USING: 4 "USING:" 6 } 0 0 } 1 } T{ continuations:condition T{ source-files.errors:source-file-error T{ lexer:lexer-error 3 39 "USING: accessors arrays assocs calendar combinators fry kernel" T{ vectors:vector { T{ lexer:lexer-parsing-word syntax:USING: 3 "USING: accessors arrays assocs calendar combinators fry kernel" 6 } 0 0 } 1 } T{ continuations:condition T{ source-files.errors:source-file-error T{ lexer:lexer-error 104 31 "CONSTANT: average-month 30+5/12" T{ ... ... ... } T{ ... ... ... ... } } f "resource:basis/calendar/calendar.factor" f } { { "Load resource:basis/calendar/calendar.factor again" syntax:t } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } { ... ... ... ... ... ... ... ... ... ... ... } T{ ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } { ... ... ... ... ... ... ... ... ... ... ... } T{ ... ... ... }... } # { "test" f ";" T{ ... ... ... ... ... ... } "formatting" T{ ... ... ... ... ... ... } f ";" T{ ... ... ... ... ... ... } "calendar"... } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... } 10 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 17 } } } } f "resource:basis/formatting/formatting.factor" f } { { "Load resource:basis/formatting/formatting.factor again" syntax:t } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ vocabs:vocab "test" T{ hashtables:hashtable 0 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } } } f f f f } T{ vocabs:vocab "test" T{ hashtables:hashtable 0 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } } } f f f f } { "! Copyright (C) 2011 Vladimir Darmanian." "! See http://factorcode.org/license.txt for BSD license." "" "USING:" " kernel sequences arrays" " io.pathnames io.files io.encodings.utf8 splitting" " command-line" " namespaces" " formatting" " ;"... } T{ vectors:vector { 0 0 0 0 0 0 0 0 0 0... } 0 } T{ vocabs:vocab "formatting" T{ hashtables:hashtable 0 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } } } f f f f } T{ vocabs:vocab "formatting" T{ hashtables:hashtable 0 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } } } f f f f } "resource:basis/formatting/formatting.factor" T{ source-files.errors:source-file-error T{ lexer:lexer-error 3 39 "USING: accessors arrays assocs calendar combinators fry kernel" T{ vectors:vector { ... ... ... } 1 } T{ continuations:condition T{ ... ... ... ... ... } { ... } T{ ... ... ... ... ... ... } } } f "resource:basis/formatting/formatting.factor" f }... } # { "test" f ";" T{ vocabs.parser:manifest f T{ hashtables:hashtable 10 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ vectors:vector { T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } } 10 } T{ vectors:vector { } 0 } T{ vectors:vector { } 0 } } "formatting" T{ vocabs.parser:manifest f T{ hashtables:hashtable 10 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ vectors:vector { T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } } 10 } T{ vectors:vector { } 0 } T{ vectors:vector { } 0 } } } T{ vectors:vector { T{ hashtables:hashtable 96 0 { source-files:source-files T{ ... ... ... ... } command-line:command-line f T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 14 0 { tools.deploy.config:deploy-name "association.cmd" vocabs.loader:vocab-roots T{ ... ... ... } tools.deploy.config:deploy-ui? f tools.deploy.shaker:deploy-vocab "test" T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 3 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 7 0 { compiler.units.private:nesting-observer T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } definitions:changed-effects T{ ... ... ... ... } T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 2 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 2 0 { lexer:lexer T{ ... ... ... ... ... ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } } 6 } T{ vectors:vector { T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" "test" f } # { } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 0 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 1 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } "resource:work/test/test.factor" f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 3 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... } "resource:work/test/test.factor" f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 4 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 4 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... } f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 5 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 5 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } { ... ... ... ... ... ... ... ... ... ... ... } { ... ... ... ... ... ... ... ... ... ... ... } f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 6 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 6 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } { ... ... ... ... ... ... ... ... ... ... ... } f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 6 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 7 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } { ... ... ... ... ... ... ... ... ... ... ... } T{ ... ... ... } T{ ... ... ... ... ... ... ... } f } # { "test" f ";" T{ ... ... ... ... ... ... } "formatting" T{ ... ... ... ... ... ... } } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 6 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 8 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } { ... ... ... ... ... ... ... ... ... ... ... } T{ ... ... ... } T{ ... ... ... ... ... ... ... } T{ ... ... ... ... ... ... ... } f } # { "test" f ";" T{ ... ... ... ... ... ... } "formatting" T{ ... ... ... ... ... ... } } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 6 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 9 } } } 10 } } } } f "resource:work/test/test.factor" f } { { "Load resource:work/test/test.factor again" syntax:t } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ vocabs:vocab "test" T{ hashtables:hashtable 0 0 { T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } } } f f f f } T{ vocabs:vocab "test" T{ hashtables:hashtable 0 0 { T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } } } f f f f } "resource:work/test/test.factor" T{ source-files.errors:source-file-error T{ lexer:lexer-error 9 12 " formatting" T{ vectors:vector { T{ lexer:lexer-parsing-word syntax:USING: 4 "USING:" 6 } 0 0 } 1 } T{ continuations:condition T{ source-files.errors:source-file-error T{ lexer:lexer-error 3 39 "USING: accessors arrays assocs calendar combinators fry kernel" T{ vectors:vector { ... ... ... } 1 } T{ continuations:condition T{ ... ... ... ... ... } { ... } T{ ... ... ... ... ... ... } } } f "resource:basis/formatting/formatting.factor" f } { { "Load resource:basis/formatting/formatting.factor again" syntax:t } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ vocabs:vocab "test" T{ ... ... ... ... } f f f f } T{ vocabs:vocab "test" T{ ... ... ... ... } f f f f } { "! Copyright (C) 2011 Vladimir Darmanian." "! See http://factorcode.org/license.txt for BSD license." "" "USING:" " kernel sequences arrays" " io.pathnames io.files io.encodings.utf8 splitting" " command-line" " namespaces" " formatting" " ;"... } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 0 } T{ vocabs:vocab "formatting" T{ ... ... ... ... } f f f f } T{ vocabs:vocab "formatting" T{ ... ... ... ... } f f f f } "resource:basis/formatting/formatting.factor" T{ source-files.errors:source-file-error T{ ... ... ... ... ... ... } f "resource:basis/formatting/formatting.factor" f }... } # { "test" f ";" T{ vocabs.parser:manifest f T{ ... ... ... ... } T{ ... ... ... } T{ ... ... ... } T{ ... ... ... } } "formatting" T{ vocabs.parser:manifest f T{ ... ... ... ... } T{ ... ... ... } T{ ... ... ... } T{ ... ... ... } } } T{ vectors:vector { T{ ... ... ... ... } T{ ... ... ... ... } T{ ... ... ... ... } T{ ... ... ... ... } T{ ... ... ... ... } T{ ... ... ... ... } } 6 } T{ vectors:vector { T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } T{ ... ... ... ... ... ... } } 10 } } } } f "resource:work/test/test.factor" f } { { "Load resource:work/test/test.factor again" syntax:t } } f } # { "test" } T{ vectors:vector { T{ hashtables:hashtable 96 0 { source-files:source-files T{ hashtables:hashtable 329 0 { "resource:basis/compiler/cfg/value-numbering/comparisons/comparisons.factor" T{ source-files:source-file "resource:basis/compiler/cfg/value-numbering/comparisons/comparisons.factor" [ ] # { ... ... } } "resource:core/alien/alien.factor" T{ source-files:source-file "resource:core/alien/alien.factor" [ ... ... ... ] # { ... ... } } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } "resource:basis/compiler/tree/combinators/combinators.factor" T{ source-files:source-file "resource:basis/compiler/tree/combinators/combinators.factor" [ ] # { ... ... } } "resource:basis/compiler/tree/propagation/recursive/recursive.factor" T{ source-files:source-file "resource:basis/compiler/tree/propagation/recursive/recursive.factor" [ ] # { ... ... } }... } } command-line:command-line f T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f }... } } T{ hashtables:hashtable 14 0 { tools.deploy.config:deploy-name "association.cmd" vocabs.loader:vocab-roots T{ vectors:vector { "resource:core" "resource:basis" "resource:extra" "resource:work" } 4 } tools.deploy.config:deploy-ui? f tools.deploy.shaker:deploy-vocab "test" T{ hashtables.private:tombstone f } T{ hashtables.private:tombstone f }... } } } 2 } T{ vectors:vector { T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" "test" f } # { } T{ vectors:vector { T{ hashtables:hashtable 96 0 { source-files:source-files T{ ... ... ... ... } command-line:command-line f T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 14 0 { tools.deploy.config:deploy-name "association.cmd" vocabs.loader:vocab-roots T{ ... ... ... } tools.deploy.config:deploy-ui? f tools.deploy.shaker:deploy-vocab "test" T{ ... ... } T{ ... ... }... } } 0 0 0 0 0 0 0 0... } 2 } T{ vectors:vector { 0 0 0 0 0 0 0 0 0 0... } 0 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ vocabs:vocab "test" T{ hashtables:hashtable 0 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } } } f f f f } f } # { "test" } T{ vectors:vector { T{ hashtables:hashtable 96 0 { source-files:source-files T{ ... ... ... ... } command-line:command-line f T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 14 0 { tools.deploy.config:deploy-name "association.cmd" vocabs.loader:vocab-roots T{ ... ... ... } tools.deploy.config:deploy-ui? f tools.deploy.shaker:deploy-vocab "test" T{ ... ... } T{ ... ... }... } } 0 0 0 0 0 0 0 0... } 2 } T{ vectors:vector { T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" "test" f } # { } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 0 } } 0 0 0 0 0 0 0 0 0... } 1 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ vocabs:vocab "test" T{ hashtables:hashtable 0 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } } } f f f f } T{ vocabs:vocab "test" T{ hashtables:hashtable 0 0 { T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } } } f f f f } f } # { "test" } T{ vectors:vector { T{ hashtables:hashtable 96 0 { source-files:source-files T{ ... ... ... ... } command-line:command-line f T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... } T{ ... ... }... } } T{ hashtables:hashtable 14 0 { tools.deploy.config:deploy-name "association.cmd" vocabs.loader:vocab-roots T{ ... ... ... } tools.deploy.config:deploy-ui? f tools.deploy.shaker:deploy-vocab "test" T{ ... ... } T{ ... ... }... } } 0 0 0 0 0 0 0 0... } 2 } T{ vectors:vector { T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" "test" f } # { } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 0 } } T{ continuations:continuation { "association.cmd/test.image" "/data/factor/temp/vocab-manifest-test" T{ ... ... ... ... ... ... ... } f } # { "test" } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 2 } T{ vectors:vector { ... ... ... ... ... ... ... ... ... ... ... } 1 } } 0 0 0 0 0 0 0 0... } 2 } } } 3 } } } T{ stack-checker.errors:unknown-macro-input kernel:call } ==== RETAIN STACK: ==== CALL STACK: frame: 7fb8da5f7fc8 executing: kernel.private:c-to-factor scan: 1 word/quot addr: 7fb8c8b8162c word/quot xt: 7fb8c4b029f0 return address: 7fb8c4b02a1e frame: 7fb8da5f7fa8 executing: [ init:boot init:do-startup-hooks command-line:(command-line) command-line:parse-command-line "run" namespaces:get vocabs.loader:run io:output-stream namespaces:get [ io:stream-flush ]... ] scan: 6 word/quot addr: 7fb8c8f48e14 word/quot xt: 7fb8c468bdd0 return address: 7fb8c468be13 frame: 7fb8da5f7f88 executing: tools.deploy.shaker:(deploy) scan: f word/quot addr: 7fb8cb29564c word/quot xt: 7fb8c4b68b60 return address: 7fb8c4b68d4d frame: 7fb8da5f7f58 executing: tools.deploy.shaker:die-with2 scan: f word/quot addr: 7fb8cb29556c word/quot xt: 7fb8c4b65e70 return address: 7fb8c4b65e98 frame: 7fb8da5f7f38 executing: [ kernel:die 1 system:exit ] scan: 0 word/quot addr: 7fb8cb298064 word/quot xt: 7fb8c4b82d80 return address: 7fb8c4b82d99 frame: 7fb8da5f7f18 executing: kernel:die scan: 1 word/quot addr: 7fb8c8db778c word/quot xt: 7fb8c4b013e0 return address: 7fb8c4b0141b Process exited with error code 1 Launch descriptor: T{ process { command { "association.cmd/test" "-i=/data/factor/temp/staging.compiler.image" "-resource-path=/data/factor/" "-run=tools.deploy.shaker" "-vocab-manifest-out=/data/factor/temp/vocab-manifest-test" "-deploy-vocab=test" "-deploy-config=/data/factor/temp/deploy-config-test" "-output-image=association.cmd/test.image" "-pic=0" } } { environment H{ } } { environment-mode +append-environment+ } { stdin +closed+ } { stdout T{ fd { disposed t } { fd 17 } } } { stderr +stdout+ } { priority +low-priority+ } { status 1 } } Type :help for debugging help. ( scratchpad )