Hi All, I'm just starting with Dancer, pointers to applicable documentation are more than welcome if you don't have time to give an extended answer. I sometimes am in the need of refactoring code that should be shared between different routes. As an example, I could have a POST route '/do-operation' that has to perform some operations and then generate a page exactly as if a GET route '/default' had been called. I understand that it's not possible (not advisable) to call a route from another route, so the obvious solution that comes to mind is to create a function that encapsulates all that the '/default' route action is supposed to do, then call it from the two different routes: sub default { # ... } get '/default' => \&default; post '/do-operation' => sub { # do whatever I need, then... return default(); } Is this approach save and future-proof? In particular, what are the constraints of using the different Dancer functions - e.g. var, session, splat, ... - inside a sub that isn't "installed" as a route action in the way all the examples report? To give a bit of perspective to my concern, I heard a lot about Devel::Declare and related stuff that plug in during the parsing phase, and I wouldn't like to incur in problems by not adhering to some "best practice", whichever it is (e.g. use HTTP redirections to force the browser to send a new request for '/default', but I would like to avoid this). Thank you, Flavio.