refactor rosconsole backend to avoid circular library dependency