backend has been made more modular inorder to take advantage of reusability