first version finsihed maybe I will add in some misc stuff later