separate interpret from main