Decoupling ftw

By decoupling these methods I was able to prepare an async version of this module very easily.