api outlined, still working on it.