realy dirty, but working