cleaning mechanism would be changed. WIP