generate clean interface