finished all of the desired functionality, for now