some solutions, some half done :)