front end code done (for the most part)