Start seperating implementation from API