more functions
modes included