changed the architecture of this project