almost forgot this... im going to move more functions into it soon