Cleaned up. Please be gentle~