only two more functions left until complete