added subtract(), add() and improved toString()