all my code , just for fun