add dependency
add validation
add clear methods, api key and make a bit more dry