Initial version. A lot of work is still required in order to make it work as expected.