finished reader and interpreter