this article will suffice i'm rewriting it to fit everything in