This one was rewritten, but i kept most in compact form ...