Custom client implementation

I’d like to build a custom client implementation, i.e. custom connectors/widgets for the core server-side components. I know this is huge, but also challenging, and I’d like to give it a try… if possibile at all! Given the modular Vaadin architecture, I though it would be pretty easy to set this up, e.g. having a custom widgets inheriting the Vaadin bootstrapping entry-point, websocket implementation but not the widgets; unfortunately, I see the default widget set is pretty coupled with the bootstrapping process and I’m pretty lost before writing the first line of code.

I’m asking a little hint just to get this started: say I want to run a UI with a custom widget for com.vaadin.ui.Button. What should I depend on? My first tought was to create a project with vaadin-server and vaadin-shared dependency, but doing so I would not have the AbstractComponentConnector which is in vaadin-client; also, the application entry-point is in vaadin-client along with the push feature and other bootstrapping utlilities. Depending from vaadin-client though, would import all the default connectors/widgets implemntations, conflicting with my custom ones.

So, is this possibile at all?