altered heavily for final