seems to be working OK, but still a lot to clean