almost done, just need to do testing now