backend constructor to accept args, tunnel argument