separate clean()