First working version. It is a work in progress in a very alpha state