-use strictures 1;
-use Tak::JSONChannel;
-use Tak::ServiceManager;
-use Tak::EvalService;
-use Tak::ModuleLoader;
-use Tak::Router;
-use Tak::Remote;
+use lib 'lib';
+use Tak::World;
-open my $stdin, '<&', \*STDIN;
-open my $stdout, '>&', \*STDOUT;
-
-my $channel = Tak::JSONChannel->new(
- read_fh => $stdin,
- write_fh => $stdout,
-);
-
-my $eval = Tak::ServiceManager->new(
- service => Tak::EvalService->new
-);
-
-my $router = Tak::Router->new(
- channel => $channel,
- local_request_handlers => {
- EVAL => $eval
- }
-);
-
-my $remote = Tak::Remote->new(
- router => $router,
- name => 'MODULE_SENDER'
-);
-
-my $loader = Tak::ModuleLoader->new(
- remote => $remote
-);
-
-shift @INC;
-shift @INC while $INC[0] =~ /^\Q$ENV{HOME}/;
-
-unshift @INC, $loader->inc_callback;
-
-$router->run;
+Tak::World->new_from_stdio->run;