prototype manipulation stuff