implement exp + cleanup