hyperboilic implementation
changes to generate function