added Trail and refactored accordingly