added all the requirements and functionality. was relatively easier than i thought