diff --git a/README.md b/README.md
index 11a338e..97053cd 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,8 @@
 
 Documentation for the library can be obtained at http://ferd.github.io/recon/
 
+Changelog
+---------
+
+- 0.3.1: factored out some logic from `recon:info/1` into `recon_lib:term_to_pid`
+  and allowed arbitrary terms to be used for pids in `recon:get_state/1`.
diff --git a/src/recon.app.src b/src/recon.app.src
index 5ae63e0..107fce2 100644
--- a/src/recon.app.src
+++ b/src/recon.app.src
@@ -1,6 +1,6 @@
 {application, recon,
  [{description, "Diagnostic tools for production use"},
-  {vsn, "0.3.0"},
+  {vsn, "0.3.1"},
   {modules, [recon]},
   {registered, []},
   {applications, [kernel, stdlib]}]}.
diff --git a/src/recon.erl b/src/recon.erl
index 32c01b0..5cf4049 100644
--- a/src/recon.erl
+++ b/src/recon.erl
@@ -94,7 +94,11 @@
                        Attr::_,
                        [{atom(), term()}]}.
 
--export_type([proc_attrs/0, inet_attrs/0]).
+-type pid_term() :: pid() | atom() | string()
+                  | {global, term()} | {via, module(), term()}
+                  | {non_neg_integer(), non_neg_integer(), non_neg_integer()}.
+
+-export_type([proc_attrs/0, inet_attrs/0, pid_term/0]).
 %%%%%%%%%%%%%%%%%%
 %%% PUBLIC API %%%
 %%%%%%%%%%%%%%%%%%
@@ -117,25 +121,16 @@
 %% registered locally (an atom), globally (`{global, Name}'), or through
 %% another registry supported in the `{via, Module, Name}' syntax (must have a
 %% `Module:whereis_name/1' function). Pids can also be passed in as a string
-%% (`"<0.39.0>"') and will be converted to be used.
--spec info(Name) -> [{Type, [{Key, Value}]},...] when
-      Name :: pid() | atom() | string()
-           | {global, term()} | {via, module(), term()},
+%% (`"<0.39.0>"') or a triple (`{0,39,0}') and will be converted to be used.
+-spec info(pid_term()) -> [{Type, [{Key, Value}]},...] when
       Type :: meta | signals | location | memory | work,
       Key :: registered_name | dictionary | group_leader | status
            | links | monitors | monitored_by | trap_exit | initial_call
            | current_stacktrace | memory | message_queue_len | heap_size
            | total_heap_size | garbage_collection | reductions,
       Value :: term().
-info(Name) when is_atom(Name) ->
-    info(whereis(Name));
-info(List = "<0."++_) ->
-    info(list_to_pid(List));
-info({global, Name}) ->
-    info(global:whereis_name(Name));
-info({via, Module, Name}) ->
-    info(Module:whereis_name(Name));
-info(Pid) when is_pid(Pid) ->
+info(PidTerm) ->
+    Pid = recon_lib:term_to_pid(PidTerm),
     Info = fun(List) -> erlang:process_info(Pid, List) end,
     [{meta, Info([registered_name, dictionary, group_leader, status])},
      {signals, Info([links, monitors, monitored_by, trap_exit])},
@@ -303,10 +298,10 @@
 %% @doc Fetch the internal state of an OTP process.
 %% Calls `sys:get_state/1' directly in R16B01+, and fetches
 %% it dynamically on older versions of OTP.
--spec get_state(Name) -> term() when
-      Name :: pid() | atom() | {global, term()} | {via, module(), term()}.
-get_state(Proc) ->
-    try 
+-spec get_state(pid_term()) -> term().
+get_state(PidTerm) ->
+    Proc = recon_lib:term_to_pid(PidTerm),
+    try
         sys:get_state(Proc)
     catch
         error:undef ->
diff --git a/src/recon_lib.erl b/src/recon_lib.erl
index 394e7c6..56378af 100644
--- a/src/recon_lib.erl
+++ b/src/recon_lib.erl
@@ -3,7 +3,7 @@
          port_list/1, port_list/2,
          proc_attrs/1, proc_attrs/2,
          inet_attrs/1, inet_attrs/2,
-         triple_to_pid/3,
+         triple_to_pid/3, term_to_pid/1,
          time_map/5, time_fold/6]).
 
 -type diff() :: [recon:proc_attrs() | recon:inet_attrs()].
@@ -115,6 +115,16 @@
                        integer_to_list(Y) ++ "." ++
                        integer_to_list(Z) ++ ">").
 
+%% @doc Transforms a given term to a pid.
+-spec term_to_pid(recon:pid_term()) -> pid().
+term_to_pid(Pid) when is_pid(Pid) -> Pid;
+term_to_pid(Name) when is_atom(Name) -> whereis(Name);
+term_to_pid(List = "<0."++_) -> list_to_pid(List);
+term_to_pid({global, Name}) -> global:whereis_name(Name);
+term_to_pid({via, Module, Name}) -> Module:whereis_name(Name);
+term_to_pid({X,Y,Z}) when is_integer(X), is_integer(Y), is_integer(Z) ->
+    triple_to_pid(X,Y,Z).
+
 %% @doc Calls a given function every `Interval' milliseconds and supports
 %% a map-like interface (each result is modified and returned)
 -spec time_map(N, Interval, Fun, State, MapFun) -> [term()] when
