everything is working, but still need to write tests