explicit api and better tests