first assignment from design patterns WIP