Add cart functionality, custom cart directive