took a while, but implemented everything except the details page