making the API a bit more flexible