implemented generators