all working, a little quick and dirty