Rework a lot, add kagan cleaner