First commit, it doesn't work at all but it contains some infrastructure