naive implementation of #1, still working on it