needs testing!

and no print function