filled in more functions