Other's project I adpated to resolve an practical exercise