implement the new features