Abstract and break apart API and engine functionality