feature completed, need to fix keyboardinterrupt traceback