runnable, but there's a logic bug