Shifted code from Comiplers repository to this one