added details about required functions, correct some order