finished writing the code. Bugs exist.