improved structure, changed interpreter