diff --git a/LICENSE.txt b/LICENSE.txt
index 3842f68..66a27ec 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -175,64 +175,3 @@
 
    END OF TERMS AND CONDITIONS
 
-   THIS PRODUCT ALSO INCLUDES THIRD PARTY SOFTWARE REDISTRIBUTED UNDER THE
-   FOLLOWING LICENSES:
-
-
-   DNSJava
-   
-		dnsjava is placed under the BSD license.  Several files are also under
-		additional licenses; see the individual files for details.
-		
-		Copyright (c) 1999-2005, Brian Wellington
-		All rights reserved.
-		
-		Redistribution and use in source and binary forms, with or without
-		modification, are permitted provided that the following conditions are met:
-		
-		    * Redistributions of source code must retain the above copyright notice,
-		      this list of conditions and the following disclaimer.
-		    * Redistributions in binary form must reproduce the above copyright notice,
-		      this list of conditions and the following disclaimer in the documentation
-		      and/or other materials provided with the distribution.
-		    * Neither the name of the dnsjava project nor the names of its contributors
-		      may be used to endorse or promote products derived from this software
-		      without specific prior written permission.
-		
-		THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-		ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-		WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-		DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-		ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-		(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-		LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-		ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-		(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-		SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.				 
-		 
-	jvyaml, The MIT License 
-			https://jvyaml.dev.java.net/
- 		
-		Permission is hereby granted, free of charge, to any person obtaining a copy
-		of this software and associated documentation files (the "Software"), to deal
-		in the Software without restriction, including without limitation the rights
-		to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-		copies of the Software, and to permit persons to whom the Software is
-		furnished to do so, subject to the following conditions:
-		
-		The above copyright notice and this permission notice shall be included in
-		all copies or substantial portions of the Software.
-		
-		THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-		IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-		FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-		AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-		LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-		OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-		THE SOFTWARE.
-        
-    dnsjnio, The Apache License, Version 2.0
-        	http://sourceforge.net/projects/dnsjnio
-
-	ALL OTHERS JARS, BY APACHE SOFTWARE FOUNDATION
-	ALL OF THESE ARE LICENSED UNDER The Apache License, Version 2.0 
\ No newline at end of file
diff --git a/NOTICE.txt b/NOTICE.txt
index 05f8b16..7ecf690 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -1,35 +1,7 @@
    Apache JSPF
-   Copyright 2009 The Apache Software Foundation
+   Copyright 2009-2011 The Apache Software Foundation
 
    This product includes software developed at
    The Apache Software Foundation (http://www.apache.org/).
    
-   This product includes/uses software, JUnit (http://www.junit.org/),
-   developed by Kent Beck, Erich Gamma, and David Saff
-   License: Common Public License Version 1.0  (http://www.opensource.org/licenses/cpl.php)
-	
-   This product has been inspired from the spfjava library
-   written by Roger Fullerton and Neil Murray.
-	  
-   This product contains DNS-aware code inspired by DNSJava 
-   test code written and copyrighted by Brian Wellington, too.
-   (see tester\src\main\java\org\apache\james\jspf\tester\ files)
-	
-   This product contains resources (SPF parser tests: test_parser.txt 
-   and test_rfc_examples.txt) derived from the libspf2 library 
-   (http://www.libspf2.org/) and distributed under the BSD license 
-   and copyright by Wayne Schlitt, Shevek. 
-   (see resolver\src\test\resources\org\apache\james\jspf\libspf2.LICENSE)
-	
-   This product contains resources (rfc4408-tests.yml) from the
-   openspf group, distributed under the BSD license and copyright
-   by Stuart D. Gathman and Julian Mehnle.
-   (see tester\src\main\resources\org\apache\james\jspf\tester\rfc4408-tests.LICENSE)
-	
-   This product contains resources (tests.yml, pyspf-tests.yml) 
-   from the pyspf library (http://cheeseshop.python.org/pypi/pyspf) 
-   distributed under the Python Software Foundation License and 
-   copyright by Terence Way, Stuart Gathman (stuart@bmsi.com) and 
-   Scott Kitterman.
-   (see tester\src\main\resources\org\apache\james\jspf\tester\pyspf.LICENSE)
-   
\ No newline at end of file
+   
