add functions
Add tests