Refactor into get and create methods to deal with caching better