update lib
part2-1
part2-2
part2 update
basic pattern