reworked the api and added more consistent parameter and method naming