Provisional, lots of changes, warm-up pull request :)