--- /dev/null
+package App::Clifton::ServiceContainer;
+
+use aliased 'App::Clifton::JabberService';
+use aliased 'App::Clifton::IRCService';
+use aliased 'App::Clifton::ConsoleService';
+use Log::Contextual qw(:log);
+use Moo;
+
+extends 'App::Clifton::Component';
+
+has jabber => (is => 'lazy');
+has irc => (is => 'lazy');
+has console => (is => 'lazy');
+
+sub BUILD {
+ my ($self) = @_;
+ $self->$_ for qw(console irc jabber);
+}
+
+sub _build_jabber {
+ my ($self) = @_;
+ log_debug { "Spawning jabber service" };
+ $self->_new_child(JabberService, { irc_service => $self->irc });
+}
+
+sub _build_irc {
+ my ($self) = @_;
+ log_debug { "Spawning IRC service" };
+ $self->_new_child(IRCService, {});
+}
+
+sub _build_console {
+ my ($self) = @_;
+ log_debug { "Spawning console service" };
+ $self->_new_child(ConsoleService, {});
+}
+
+1;