cleaned code, clean interface