draft. dirty and naive