first, messy, version