--- /dev/null
+package Tak::Result;
+
+use Moo;
+
+has type => (is => 'ro', required => 1);
+has data => (is => 'ro', required => 1);
+
+sub get {
+ my ($self) = @_;
+ $self->throw unless $self->type eq 'success';
+ return wantarray ? @{$self->data} : $self->data->[0];
+}
+
+sub throw {
+ my ($self) = @_;
+ die $self->exception;
+}
+
+sub exception {
+ my ($self) = @_;
+ $self->type.': '.join ' ', @{$self->data};
+}
+
+1;