     }
 }
 
+// MARK: - 
+// MARK: Movie details
+public extension TMDB {
+    public func detailsFor(movie: Movie, inclidedDetails details: Details = [], completion: @escaping (Movie?, Error?) -> ()) {
+        Logging.log("Fetch details for movie:\(movie)")
+        detailsFor(movieId: movie.id, inclidedDetails: details, completion: completion)
+    }
+    
+    public func detailsFor(movieId: Int, inclidedDetails details: Details = [], completion: @escaping (Movie?, Error?) -> ()) {
+        Logging.log("Fetch details for movieId:\(movieId)")
+        let request = FetchDetailsRequest(movieId: movieId, includedDetails: details)
+        request.resulthandler = {
+            result, error in
+            
+            completion(result as? Movie, error)
+        }
+        runWithConfigCheck(request: request)
+    }
+}
+
 // MARK: -
 // MARK: Lists
 public extension TMDB {

    public init(apiKey: String, networkFetch: NetworkFetch) {
        Injector.sharedInsatnce.apiKey = apiKey
        Injector.sharedInsatnce.networkFetch = networkFetch
    }
    
    public func fetchNextPage(_ cursor: Cursor<Movie>, completion: @escaping ((Cursor<Movie>) -> ())) {
        Logging.log("Fetch next page")
        fetchTopMovies(on: cursor.nextPage(), completion: completion)
    }
    
    public func detailsFor(movie: Movie, inclidedDetails details: Details = [], completion: @escaping (Movie?, Error?) -> ()) {
        Logging.log("Fetch details for movie:\(movie)")
        detailsFor(movieId: movie.id, inclidedDetails: details, completion: completion)
    }

    public func detailsFor(movieId: Int, inclidedDetails details: Details = [], completion: @escaping (Movie?, Error?) -> ()) {
        Logging.log("Fetch details for movieId:\(movieId)")
        let request = FetchDetailsRequest(movieId: movieId, includedDetails: details)
        request.resulthandler = {
            result, error in
            
            completion(result as? Movie, error)
        }
        runWithConfigCheck(request: request)
    }
    
    fileprivate func runWithConfigCheck(request: NetworkRequest) {

    }
}

// MARK: -
// MARK: Movie genres list
public extension TMDB {
    public func listMovieGenres(completion: @escaping ([Genre]) -> ()) {
        let request = ListMovieGenresRequest()
