this article needs to be thoroughly expanded i will try my best