got almost all the functionality down, now its just time to separate them into a neater object oriented system