rename drains to be more specific
extract drainer interface