Total rewrite of interpreter. This fixes unholy mess