semi-working version.