Reorganized and worked on the abstractions