Version 2.00: Fully rewrited