week2 added implementations & tests