First commit with Observer and Strategy patterns