Fully working (but ugly).