Kinda heavy update, still doesn't compile.