some api changes to make things a bit more clear to me