all smaller functions implemented i guess
not sure if this was commit