COmplete rewrite, more incremental of parser.

That way I always have a working build