functionality pretty much summed up