Cleaned up. This is v1.0