i made some serious changes over here