add support for seeders. refactor