add name scope
5-2 implement
5-3 implement
should be 5-4
5-3 brute method
5-5 implement
5-6 implement