clean, add tests