Initial commit, almost working but clearly needs improvements !