clean code (better api)