all functions work, writing tests later