doesn't compile, but getting there