diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d99760119e3fd31b129d6c0943a2bc02043ad405
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,174 @@
+version: 2
+gpu: &gpu
+  machine:
+    image: ubuntu-1604:201903-01
+  resource_class: gpu.small
+  environment:
+    FPS_THRESHOLD: 900
+
+jobs:
+  python_lint:
+    docker:
+      - image: circleci/python:3.6
+    steps:
+      - checkout
+      - run:
+          name: setup
+          command: |
+              sudo pip install black isort
+      - run:
+          name: run black
+          command: |
+              black . --line-length 79 --check  --diff
+      - run:
+          name: run isort
+          command: |
+              isort . -rc --multi-line 3 --trailing-comma --force-grid-wrap 0 --line-width 79 --combine-as
+
+  install_and_test_ubuntu:
+    <<: *gpu
+    steps:
+      - checkout:
+          path: ./habitat-api
+      - run:
+          name: Install cmake
+          no_output_timeout: 5m
+          command: |
+              echo $(git ls-remote https://github.com/facebookresearch/habitat-sim.git HEAD | awk '{ print $1}') > ./hsim_sha
+              wget https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.sh
+              sudo mkdir /opt/cmake
+              sudo sh ./cmake-3.13.4-Linux-x86_64.sh --prefix=/opt/cmake --skip-license
+              sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
+      - run:
+          name: Install dependencies
+          no_output_timeout: 20m
+          command: |
+              sudo apt-get update || true
+              sudo apt-get install -y --no-install-recommends \
+                  build-essential \
+                  git \
+                  curl \
+                  vim \
+                  ca-certificates \
+                  libjpeg-dev \
+                  libglm-dev \
+                  libegl1-mesa-dev \
+                  xorg-dev \
+                  freeglut3-dev \
+                  pkg-config \
+                  wget \
+                  zip \
+                  unzip || true
+      - run:
+          name: Install cuda
+          no_output_timeout: 20m
+          background: true
+          command: |
+              wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.44-1_amd64.deb
+              sudo dpkg -i cuda-repo-ubuntu1604_8.0.44-1_amd64.deb
+              sudo apt-get update || true
+              sudo apt-get --yes --force-yes install cuda
+              touch ./cuda_installed
+              nvidia-smi
+      - restore_cache:
+          keys:
+            - conda-{{ checksum "habitat-api/.circleci/config.yml" }}
+      - run:
+          name: Install conda and dependencies
+          no_output_timeout: 20m
+          command: |
+              if [ ! -d ~/miniconda ]
+              then
+                curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
+                chmod +x ~/miniconda.sh
+                ~/miniconda.sh -b -p $HOME/miniconda
+                rm ~/miniconda.sh
+                export PATH=$HOME/miniconda/bin:$PATH
+                conda create -y -n habitat python=3.6
+                . activate habitat
+                conda install -q -y -c conda-forge ninja numpy pytest
+              fi
+      - run:
+          name: Install pytorch
+          no_output_timeout: 20m
+          background: true
+          command: |
+              if [ ! -f ~/miniconda/pytorch_installed ]
+              then
+                export PATH=$HOME/miniconda/bin:$PATH
+                . activate habitat;
+                conda install -c  conda-forge opencv -y
+                conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorch
+              fi
+              touch ~/miniconda/pytorch_installed
+      - restore_cache:
+          keys:
+            - habitat-sim-{{ checksum "./hsim_sha" }}
+      - run:
+          name: Build, install habitat-sim and run benchmark
+          no_output_timeout: 20m
+          command: |
+              export PATH=$HOME/miniconda/bin:$PATH
+              . activate habitat;
+              if [ ! -d ./habitat-sim ]
+              then
+                git clone https://github.com/facebookresearch/habitat-sim.git
+                cd habitat-sim
+                python setup.py install --headless
+              else
+                if [ ! -f ~/miniconda/pip_deps_installed ]
+                then
+                  cd habitat-sim
+                  python setup.py install --headless
+                fi
+              fi
+      - save_cache:
+          key: conda-{{ checksum "habitat-api/.circleci/config.yml" }}
+          background: true
+          paths:
+            - ~/miniconda
+      - run:
+          name: Download test data
+          command: |
+
+              if [ ! -d ./habitat-sim/data ]
+              then
+                cd habitat-sim
+                wget http://dl.fbaipublicfiles.com/habitat/habitat-test-scenes.zip
+                unzip habitat-test-scenes.zip
+                rm habitat-test-scenes.zip
+              fi
+      - run:
+          name: Run sim benchmark
+          command: |
+              while [ ! -f ./cuda_installed ]; do sleep 2; done # wait for CUDA
+              export PATH=$HOME/miniconda/bin:$PATH
+              . activate habitat; cd habitat-sim
+              python examples/example.py --scene data/scene_datasets/habitat-test-scenes/van-gogh-room.glb --silent --test_fps_regression $FPS_THRESHOLD
+      - save_cache:
+          key: habitat-sim-{{ checksum "./hsim_sha" }}
+          paths:
+            - ./habitat-sim
+      - run:
+          name: Run api tests
+          command: |
+              export PATH=$HOME/miniconda/bin:$PATH
+              . activate habitat; cd habitat-api
+              while [ ! -f ~/miniconda/pytorch_installed ]; do sleep 2; done # wait for Pytorch
+              ln -s ../habitat-sim/data data
+              pip install -r requirements.txt --progress-bar off
+              touch ~/miniconda/pip_deps_installed
+              python setup.py test
+              python setup.py develop --all
+              python -u habitat_baselines/train_ppo.py --log-file "train.log" --checkpoint-folder "data/checkpoints" --sim-gpu-id 0 --pth-gpu-id 0 --num-processes 1 --num-mini-batch 1 --num-updates 10
+      - save_cache:
+          key: conda-{{ checksum "habitat-api/.circleci/config.yml" }}
+          paths:
+            - ~/miniconda
+
+workflows:
+  version: 2
+  install_and_test:
+    jobs:
+      - python_lint
+      - install_and_test_ubuntu
\ No newline at end of file
diff --git a/examples/shortest_path_follower_example.py b/examples/shortest_path_follower_example.py
index 2cd170f36a19b036d3624375c5b85ec034eb867c..e78cdd363f6d41a77bdfe6c3afdf3fc7ef15abc0 100644
--- a/examples/shortest_path_follower_example.py
+++ b/examples/shortest_path_follower_example.py
@@ -8,8 +8,9 @@ import os
 import shutil
 
 import cv2
-import habitat
 import numpy as np
+
+import habitat
 from habitat.tasks.nav.shortest_path_follower import ShortestPathFollower
 from habitat.utils.visualizations import maps
 from habitat.utils.visualizations.utils import images_to_video
diff --git a/habitat/core/dataset.py b/habitat/core/dataset.py
index 200c98afc9dcb24a2308dc6d305718929d8946ea..e0219bfd7d2c5b0045b772a571814afe9aebeacb 100644
--- a/habitat/core/dataset.py
+++ b/habitat/core/dataset.py
@@ -4,15 +4,15 @@
 # This source code is licensed under the MIT license found in the
 # LICENSE file in the root directory of this source tree.
 
-import attr
 import copy
 import json
-from typing import Dict, List, Type, TypeVar, Generic, Optional, Callable
-
-from habitat.core.utils import not_none_validator
+from typing import Callable, Dict, Generic, List, Optional, Type, TypeVar
 
+import attr
 import numpy as np
 
+from habitat.core.utils import not_none_validator
+
 
 @attr.s(auto_attribs=True, kw_only=True)
 class Episode:
diff --git a/habitat/core/embodied_task.py b/habitat/core/embodied_task.py
index aa38576a1de957de3687565d48b9ad30a3d3e028..775c1c09b95f161ddafe475248d6a7c897d5819d 100644
--- a/habitat/core/embodied_task.py
+++ b/habitat/core/embodied_task.py
@@ -4,11 +4,11 @@
 # This source code is licensed under the MIT license found in the
 # LICENSE file in the root directory of this source tree.
 
-from typing import Any, List, Type, Optional, Dict
 from collections import OrderedDict
+from typing import Any, Dict, List, Optional, Type
 
 from habitat.config import Config
-from habitat.core.dataset import Episode, Dataset
+from habitat.core.dataset import Dataset, Episode
 from habitat.core.simulator import SensorSuite, Simulator
 
 
diff --git a/habitat/core/env.py b/habitat/core/env.py
index cfa3438c2cf5af7a71a3b4a74b3b4e228bfbb9f0..874e69c25148f4100b1675a622f256c378d18c1f 100644
--- a/habitat/core/env.py
+++ b/habitat/core/env.py
@@ -5,18 +5,19 @@
 # LICENSE file in the root directory of this source tree.
 
 import time
-from typing import Dict, Type, List, Any, Optional, Tuple
+from typing import Any, Dict, List, Optional, Tuple, Type
 
 import gym
 import numpy as np
 from gym.spaces.dict_space import Dict as SpaceDict
+
 from habitat.config import Config
 from habitat.core.dataset import Dataset, Episode
 from habitat.core.embodied_task import EmbodiedTask, Metrics
 from habitat.core.simulator import Observations, Simulator
+from habitat.datasets import make_dataset
 from habitat.sims import make_sim
 from habitat.tasks import make_task
-from habitat.datasets import make_dataset
 
 
 class Env:
diff --git a/habitat/core/simulator.py b/habitat/core/simulator.py
index fddd6bfddacee772f846018a250fd8a3769a201d..69320bcc38f627ad9adcde9e5f0f13ea3754c5bd 100644
--- a/habitat/core/simulator.py
+++ b/habitat/core/simulator.py
@@ -5,11 +5,12 @@
 # LICENSE file in the root directory of this source tree.
 
 from collections import OrderedDict
-from typing import Any, Dict, List, Optional
 from enum import Enum
+from typing import Any, Dict, List, Optional
 
 from gym import Space
 from gym.spaces.dict_space import Dict as SpaceDict
+
 from habitat.config import Config
 
 
diff --git a/habitat/core/vector_env.py b/habitat/core/vector_env.py
index 7cccd8cdce421399d0e203261a75091803daa0fa..d5fc6d387587662f60ed81c859cacb4472b9e648 100644
--- a/habitat/core/vector_env.py
+++ b/habitat/core/vector_env.py
@@ -8,16 +8,17 @@ import multiprocessing as mp
 from multiprocessing.connection import Connection
 from queue import Queue
 from threading import Thread
-from typing import Iterable, List, Tuple, Callable, Union, Any, Set, Optional
+from typing import Any, Callable, Iterable, List, Optional, Set, Tuple, Union
 
-import habitat
+import gym
 import numpy as np
 from gym.spaces.dict_space import Dict as SpaceDict
+
+import habitat
 from habitat.config import Config
 from habitat.core.env import Env, Observations
 from habitat.core.logging import logger
 from habitat.core.utils import tile_images
-import gym
 
 STEP_COMMAND = "step"
 RESET_COMMAND = "reset"
diff --git a/habitat/datasets/pointnav/pointnav_dataset.py b/habitat/datasets/pointnav/pointnav_dataset.py
index 2795b2ebff4b28bef75eee20983f0ca344f63fdc..c2ce3cbe23dad71933c632c355dd7c70070d87a2 100644
--- a/habitat/datasets/pointnav/pointnav_dataset.py
+++ b/habitat/datasets/pointnav/pointnav_dataset.py
@@ -12,9 +12,9 @@ from typing import List, Optional
 from habitat.config import Config
 from habitat.core.dataset import Dataset
 from habitat.tasks.nav.nav_task import (
+    NavigationEpisode,
     NavigationGoal,
     ShortestPathPoint,
-    NavigationEpisode,
 )
 
 ALL_SCENES_MASK = "*"
diff --git a/habitat/datasets/pointnav/pointnav_generator.py b/habitat/datasets/pointnav/pointnav_generator.py
index 99cb542a2ba445b43e0f84b9395208b2bdd43ba7..2fbd79108bc48dedbb8addab0684c607205f955f 100644
--- a/habitat/datasets/pointnav/pointnav_generator.py
+++ b/habitat/datasets/pointnav/pointnav_generator.py
@@ -4,7 +4,7 @@ import numpy as np
 
 from habitat.core.simulator import Simulator
 from habitat.datasets.utils import get_action_shortest_path
-from habitat.tasks.nav.nav_task import NavigationGoal, NavigationEpisode
+from habitat.tasks.nav.nav_task import NavigationEpisode, NavigationGoal
 
 """
     A minimum radius of a plane that a point should be part of to be
diff --git a/habitat/sims/habitat_simulator.py b/habitat/sims/habitat_simulator.py
index e60ca5518ed8e218d4a0f03866328ea3c7604bf6..8050ca023ed0377a3f615511eb0b165863fa366c 100644
--- a/habitat/sims/habitat_simulator.py
+++ b/habitat/sims/habitat_simulator.py
@@ -4,18 +4,23 @@
 # This source code is licensed under the MIT license found in the
 # LICENSE file in the root directory of this source tree.
 
-from typing import List, Any, Optional
 from enum import Enum
+from typing import Any, List, Optional
+
+import numpy as np
+from gym import Space, spaces
 
 import habitat
 import habitat_sim
-import numpy as np
-from gym import spaces, Space
-from habitat import SensorSuite, Config
+from habitat import Config, SensorSuite
 from habitat.core.logging import logger
-from habitat.core.simulator import AgentState, ShortestPathPoint
-from habitat.core.simulator import RGBSensor, DepthSensor, SemanticSensor
-
+from habitat.core.simulator import (
+    AgentState,
+    DepthSensor,
+    RGBSensor,
+    SemanticSensor,
+    ShortestPathPoint,
+)
 
 RGBSENSOR_DIMENSION = 3
 
diff --git a/habitat/tasks/eqa/eqa_task.py b/habitat/tasks/eqa/eqa_task.py
index 66d67e47e24ea3746e5b4e11316c0285499182f4..6898db2a2bf3737a639491ed417c0ce9a23e7a7f 100644
--- a/habitat/tasks/eqa/eqa_task.py
+++ b/habitat/tasks/eqa/eqa_task.py
@@ -7,14 +7,14 @@
 from typing import Dict, Optional
 
 import attr
-
 import numpy as np
 from gym import spaces
+
 from habitat.core.simulator import (
+    Observations,
     Sensor,
-    SensorTypes,
     SensorSuite,
-    Observations,
+    SensorTypes,
 )
 from habitat.core.utils import not_none_validator
 from habitat.tasks.nav.nav_task import NavigationEpisode, NavigationTask
diff --git a/habitat/tasks/nav/nav_task.py b/habitat/tasks/nav/nav_task.py
index c0c03b8d1bba512d589f1de4ec8dfe9fa9d96f05..c46cf2e8b52b88fce3ca36f6e1cc069e966619b1 100644
--- a/habitat/tasks/nav/nav_task.py
+++ b/habitat/tasks/nav/nav_task.py
@@ -6,20 +6,20 @@
 
 from typing import Any, List, Optional, Type
 
-import cv2
 import attr
+import cv2
 import numpy as np
 from gym import spaces
 
 import habitat
 from habitat.config import Config
-from habitat.core.dataset import Episode, Dataset
+from habitat.core.dataset import Dataset, Episode
 from habitat.core.embodied_task import Measurements
 from habitat.core.simulator import (
-    Simulator,
-    ShortestPathPoint,
-    SensorTypes,
     SensorSuite,
+    SensorTypes,
+    ShortestPathPoint,
+    Simulator,
 )
 from habitat.core.utils import not_none_validator
 from habitat.tasks.utils import cartesian_to_polar, quaternion_rotate_vector
diff --git a/habitat/tasks/nav/shortest_path_follower.py b/habitat/tasks/nav/shortest_path_follower.py
index 12fdb3b1d9e9b2197701cdbe102464b2fe04b34e..7d6da161ba4a6addc95e19b5627863ae8c29593b 100644
--- a/habitat/tasks/nav/shortest_path_follower.py
+++ b/habitat/tasks/nav/shortest_path_follower.py
@@ -6,17 +6,15 @@
 
 from typing import Union
 
-import habitat_sim
 import numpy as np
 
-from habitat.sims.habitat_simulator import HabitatSim
-from habitat.sims.habitat_simulator import SimulatorActions
+import habitat_sim
+from habitat.sims.habitat_simulator import HabitatSim, SimulatorActions
 from habitat.utils.geometry_utils import (
     angle_between_quaternions,
     quaternion_from_two_vectors,
 )
 
-
 EPSILON = 1e-6
 
 
diff --git a/habitat/utils/geometry_utils.py b/habitat/utils/geometry_utils.py
index 7249333bb860db2c65175527a24c2b5b963aa675..ac454f4d94f6b1f6c6abc7ed09cbcee97c59bce4 100644
--- a/habitat/utils/geometry_utils.py
+++ b/habitat/utils/geometry_utils.py
@@ -7,7 +7,6 @@
 import numpy as np
 import quaternion
 
-
 EPSILON = 1e-8
 
 
diff --git a/habitat/utils/visualizations/maps.py b/habitat/utils/visualizations/maps.py
index c44302acd69b2d985b33e8545c7e48e8c269d73c..fbd7eb6fe20296f8074c94c157966c5a65aa3b60 100644
--- a/habitat/utils/visualizations/maps.py
+++ b/habitat/utils/visualizations/maps.py
@@ -5,12 +5,13 @@
 # LICENSE file in the root directory of this source tree.
 
 import os
-from typing import List, Tuple, Optional
+from typing import List, Optional, Tuple
 
 import cv2
 import imageio
 import numpy as np
 import scipy.ndimage
+
 from habitat.core.simulator import Simulator
 from habitat.utils.visualizations import utils
 
diff --git a/habitat/utils/visualizations/utils.py b/habitat/utils/visualizations/utils.py
index 474b980a587bb1bb3b37b548fbd4ee09998b37eb..47a21a84c98357f80ae8944aa74da2d85e29ecc8 100644
--- a/habitat/utils/visualizations/utils.py
+++ b/habitat/utils/visualizations/utils.py
@@ -5,10 +5,10 @@
 # LICENSE file in the root directory of this source tree.
 
 import os
-from typing import Tuple, Optional, List
+from typing import List, Optional, Tuple
 
-import numpy as np
 import imageio
+import numpy as np
 import tqdm
 
 
diff --git a/habitat_baselines/agents/ppo_agents.py b/habitat_baselines/agents/ppo_agents.py
index ea0b53773f2a19b849bfc499ace1a604ee6a5422..26f59a9449207ab5ec658649b59521eeffb37ca2 100644
--- a/habitat_baselines/agents/ppo_agents.py
+++ b/habitat_baselines/agents/ppo_agents.py
@@ -10,13 +10,13 @@ import random
 
 import numpy as np
 import torch
-from gym.spaces import Discrete, Dict, Box
+from gym.spaces import Box, Dict, Discrete
 
 import habitat
-from habitat_baselines.rl.ppo import Policy
-from habitat_baselines.rl.ppo.utils import batch_obs
 from habitat import Config
 from habitat.core.agent import Agent
+from habitat_baselines.rl.ppo import Policy
+from habitat_baselines.rl.ppo.utils import batch_obs
 
 
 def get_defaut_config():
diff --git a/habitat_baselines/agents/slam_agents.py b/habitat_baselines/agents/slam_agents.py
index c90ecb5f21259a2eca86d2b3732a5fc7ac7a138c..b7694e826f5d42bd9134c598ac20e5c64b679880 100644
--- a/habitat_baselines/agents/slam_agents.py
+++ b/habitat_baselines/agents/slam_agents.py
@@ -1,39 +1,34 @@
 import argparse
-import numpy as np
-import torch
+import os
 import random
+import sys
 import time
-import os
-import PIL
 from math import pi
+
+import numpy as np
+import PIL
+import requests
+import torch
 import torch.nn.functional as F
-import orbslam2
+
 import habitat
-from habitat_baselines.slambased.utils import generate_2dgrid
+import orbslam2
+from habitat.config.default import get_config
+from habitat.sims.habitat_simulator import SimulatorActions
+from habitat_baselines.config.default import get_config as cfg_baseline
+from habitat_baselines.slambased.mappers import DirectDepthMapper
+from habitat_baselines.slambased.monodepth import MonoDepthEstimator
+from habitat_baselines.slambased.path_planners import DifferentiableStarPlanner
 from habitat_baselines.slambased.reprojection import (
-    homogenize_p,
-    get_distance,
-    project_tps_into_worldmap,
+    angle_to_pi_2_minus_pi_2 as norm_ang,
     get_direction,
+    get_distance,
     habitat_goalpos_to_mapgoal_pos,
+    homogenize_p,
     planned_path2tps,
-    angle_to_pi_2_minus_pi_2,
-)
-from habitat_baselines.slambased.reprojection import (
-    angle_to_pi_2_minus_pi_2 as norm_ang,
+    project_tps_into_worldmap,
 )
-from habitat.sims.habitat_simulator import SimulatorActions
-from habitat_baselines.slambased.mappers import DirectDepthMapper
-from habitat_baselines.slambased.path_planners import DifferentiableStarPlanner
-
-from habitat_baselines.config.default import get_config as cfg_baseline
-from habitat.config.default import get_config
-
-from habitat_baselines.slambased.monodepth import MonoDepthEstimator
-
-# https://sumit-ghosh.com/articles/python-download-progress-bar/
-import sys
-import requests
+from habitat_baselines.slambased.utils import generate_2dgrid
 
 
 def download(url, filename):
diff --git a/habitat_baselines/config/default.py b/habitat_baselines/config/default.py
index 39a9cc377bed39a7ead66a60a8f002ebb2baa0c8..ee9c62d7d46bdd5f39a6d202adf55fb4b531e750 100644
--- a/habitat_baselines/config/default.py
+++ b/habitat_baselines/config/default.py
@@ -4,8 +4,10 @@
 # This source code is licensed under the MIT license found in the
 # LICENSE file in the root directory of this source tree.
 
-import numpy as np
 from typing import List, Optional, Union
+
+import numpy as np
+
 from habitat import get_config
 from habitat.config import Config as CN
 
diff --git a/habitat_baselines/evaluate_ppo.py b/habitat_baselines/evaluate_ppo.py
index 43f340797fab36e9f5d0ccebbf398bf221ecef2f..ef496589b11fd1adb8677f5ba61b50618200dcd8 100644
--- a/habitat_baselines/evaluate_ppo.py
+++ b/habitat_baselines/evaluate_ppo.py
@@ -9,12 +9,11 @@ import argparse
 import torch
 
 import habitat
-from habitat.config.default import get_config
 from config.default import get_config as cfg_baseline
-
-from train_ppo import make_env_fn
+from habitat.config.default import get_config
 from rl.ppo import PPO, Policy
 from rl.ppo.utils import batch_obs
+from train_ppo import make_env_fn
 
 
 def main():
diff --git a/habitat_baselines/rl/ppo/policy.py b/habitat_baselines/rl/ppo/policy.py
index 0fa2adca68d511cc8a97e20b49076a68f7eaed0b..5c9e725633fff4666dbab465e01a66e59b3f504f 100644
--- a/habitat_baselines/rl/ppo/policy.py
+++ b/habitat_baselines/rl/ppo/policy.py
@@ -4,12 +4,11 @@
 # This source code is licensed under the MIT license found in the
 # LICENSE file in the root directory of this source tree.
 
+import numpy as np
 import torch
 import torch.nn as nn
 
-from habitat_baselines.rl.ppo.utils import Flatten, CategoricalNet
-
-import numpy as np
+from habitat_baselines.rl.ppo.utils import CategoricalNet, Flatten
 
 
 class Policy(nn.Module):
diff --git a/habitat_baselines/rl/ppo/ppo.py b/habitat_baselines/rl/ppo/ppo.py
index 6f46ab22523f2516c40c6f5c12a2b6e6f5b81cae..78f113f89d7f167b0bcd20e556d8c9ec0e6e9b71 100644
--- a/habitat_baselines/rl/ppo/ppo.py
+++ b/habitat_baselines/rl/ppo/ppo.py
@@ -8,7 +8,6 @@ import torch
 import torch.nn as nn
 import torch.optim as optim
 
-
 EPS_PPO = 1e-5
 
 
diff --git a/habitat_baselines/slambased/mappers.py b/habitat_baselines/slambased/mappers.py
index 527b37cd90d7082b2e4baffc96ba2612625fa94c..90b16cd3b0fd226b526d0802c7ae3aa31b91e905 100644
--- a/habitat_baselines/slambased/mappers.py
+++ b/habitat_baselines/slambased/mappers.py
@@ -1,6 +1,7 @@
 import numpy as np
 import torch
 import torch.nn as nn
+
 from habitat_baselines.slambased.reprojection import (
     get_map_size_in_cells,
     project2d_pcl_into_worldmap,
diff --git a/habitat_baselines/slambased/monodepth.py b/habitat_baselines/slambased/monodepth.py
index 38c7269c53cc8df86c63d289187fb7864a5010ee..a1f87b79370af53a2449e9427114c267b1054e21 100644
--- a/habitat_baselines/slambased/monodepth.py
+++ b/habitat_baselines/slambased/monodepth.py
@@ -6,26 +6,26 @@ WACV 2019
 """
 
 
+import math
+import os
+import pdb
+
+import numpy as np
 import torch
+import torch.nn as nn
+import torch.nn.functional as F
 import torch.nn.parallel
+import torch.utils.model_zoo as model_zoo
+from PIL import Image
+from torchvision import transforms, utils
 
 """
 ResNet code gently borrowed from
 https://github.com/pytorch/vision/blob/master/torchvision/models/py
 """
 
-import torch.nn as nn
-import math
-import torch.utils.model_zoo as model_zoo
-import torch.nn.functional as F
-import torch
-import numpy as np
-import pdb
-import os
-from PIL import Image
 
 accimage = None
-from torchvision import transforms, utils
 
 
 __all__ = [
diff --git a/habitat_baselines/slambased/path_planners.py b/habitat_baselines/slambased/path_planners.py
index eebaebfad5e2b57d98cf873b8a7b9ab9eb4440f3..9e15e15747e00d3fdede0ebfe76f2849e956a7d7 100644
--- a/habitat_baselines/slambased/path_planners.py
+++ b/habitat_baselines/slambased/path_planners.py
@@ -1,8 +1,9 @@
+import matplotlib.pyplot as plt
 import numpy as np
 import torch
-import torch.nn.functional as F
 import torch.nn as nn
-import matplotlib.pyplot as plt
+import torch.nn.functional as F
+
 from habitat_baselines.slambased.utils import generate_2dgrid
 
 
diff --git a/habitat_baselines/slambased/reprojection.py b/habitat_baselines/slambased/reprojection.py
index e71074b55437ca1044e6da3cc9a89682c703bcb8..7d79f6d7410788bb77e1fa6b730e81079ae88da1 100644
--- a/habitat_baselines/slambased/reprojection.py
+++ b/habitat_baselines/slambased/reprojection.py
@@ -1,6 +1,7 @@
+from math import ceil, floor
+
 import numpy as np
 import torch
-from math import ceil, floor
 
 
 def p_zx(p):
diff --git a/habitat_baselines/slambased/utils.py b/habitat_baselines/slambased/utils.py
index 8b39671c7b38c4cc84e9f65a855c48cd283b2ed8..73acc862d0d4d97522613df7c8e5de5c95166d78 100644
--- a/habitat_baselines/slambased/utils.py
+++ b/habitat_baselines/slambased/utils.py
@@ -1,6 +1,7 @@
+import time
+
 import numpy as np
 import torch
-import time
 from PIL import Image
 
 
diff --git a/habitat_baselines/train_ppo.py b/habitat_baselines/train_ppo.py
index b71238263630cbee285c20b15f9f36e3afe4092a..90ecc0d82b5ba867b4dd90ff02b47db8aa23319b 100644
--- a/habitat_baselines/train_ppo.py
+++ b/habitat_baselines/train_ppo.py
@@ -5,20 +5,21 @@
 # LICENSE file in the root directory of this source tree.
 
 import os
-from time import time
-from collections import deque
 import random
-import numpy as np
+from collections import deque
+from time import time
 
+import numpy as np
 import torch
+
 import habitat
+from config.default import get_config as cfg_baseline
 from habitat import logger
-from habitat.sims.habitat_simulator import SimulatorActions
 from habitat.config.default import get_config as cfg_env
-from config.default import get_config as cfg_baseline
 from habitat.datasets.pointnav.pointnav_dataset import PointNavDatasetV1
+from habitat.sims.habitat_simulator import SimulatorActions
 from rl.ppo import PPO, Policy, RolloutStorage
-from rl.ppo.utils import update_linear_schedule, ppo_args, batch_obs
+from rl.ppo.utils import batch_obs, ppo_args, update_linear_schedule
 
 
 class NavRLEnv(habitat.RLEnv):
diff --git a/setup.py b/setup.py
index bec05a1f77d9fc9513df2b46dc04c722250aeb25..a95bae9b43e933e440f6d76edc993ec0aa7ba9bb 100644
--- a/setup.py
+++ b/setup.py
@@ -7,12 +7,14 @@
 import glob
 import os.path
 import sys
+
 import setuptools
 from setuptools.command.develop import develop as DefaultDevelopCommand
 from setuptools.command.install import install as DefaultInstallCommand
 
 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "habitat"))
-from version import VERSION  # noqa
+from version import VERSION  # isort:skip noqa
+
 
 with open("README.md", encoding="utf8") as f:
     readme = f.read()
diff --git a/test/test_baseline_agents.py b/test/test_baseline_agents.py
index fcb6283f06cdc1d0f87994711b2d686969e29762..b69bc82202f0f3ee71b2f1b5162ac70b0f1c763f 100644
--- a/test/test_baseline_agents.py
+++ b/test/test_baseline_agents.py
@@ -4,9 +4,11 @@
 # This source code is licensed under the MIT license found in the
 # LICENSE file in the root directory of this source tree.
 
-import habitat
 import os
+
 import pytest
+
+import habitat
 from habitat_baselines.agents import simple_agents
 
 try:
diff --git a/test/test_habitat_example.py b/test/test_habitat_example.py
index 39131be2471ffa682fd3cac03f0287f34010bf27..1f95c35f419e19ea401abe86eae9e37ee0408da2 100644
--- a/test/test_habitat_example.py
+++ b/test/test_habitat_example.py
@@ -7,10 +7,9 @@
 import pytest
 
 import habitat
+from examples import shortest_path_follower_example, visualization_examples
 from examples.example import example
 from habitat.datasets.pointnav.pointnav_dataset import PointNavDatasetV1
-from examples import visualization_examples
-from examples import shortest_path_follower_example
 
 
 def test_readme_example():
diff --git a/test/test_pointnav_dataset.py b/test/test_pointnav_dataset.py
index dbc4b9053dcc16f8aed9b29747c10d0072fbcc71..1701b981fb9d49f178220c1f3db6f1bedb418d85 100644
--- a/test/test_pointnav_dataset.py
+++ b/test/test_pointnav_dataset.py
@@ -18,8 +18,8 @@ from habitat.core.embodied_task import Episode
 from habitat.core.logging import logger
 from habitat.datasets import make_dataset
 from habitat.datasets.pointnav.pointnav_dataset import (
-    PointNavDatasetV1,
     DEFAULT_SCENE_PATH_PREFIX,
+    PointNavDatasetV1,
 )
 from habitat.utils.geometry_utils import quaternion_xyzw_to_wxyz
 
diff --git a/test/test_sensors.py b/test/test_sensors.py
index 6b6cc3868711a1d7605c15aac988c794a6e4627a..771704089bb09d16ee666ec8f1381652354222e2 100644
--- a/test/test_sensors.py
+++ b/test/test_sensors.py
@@ -4,19 +4,20 @@
 # This source code is licensed under the MIT license found in the
 # LICENSE file in the root directory of this source tree.
 
-import numpy as np
 import os
-import pytest
 import random
 
+import numpy as np
+import pytest
+
 import habitat
 from habitat.config.default import get_config
+from habitat.sims.habitat_simulator import SimulatorActions
 from habitat.tasks.nav.nav_task import (
-    NavigationEpisode,
     COLLISION_PROXIMITY_TOLERANCE,
+    NavigationEpisode,
     NavigationGoal,
 )
-from habitat.sims.habitat_simulator import SimulatorActions
 
 NON_STOP_ACTIONS = [
     v for v in range(len(SimulatorActions)) if v != SimulatorActions.STOP.value
diff --git a/test/test_trajectory_sim.py b/test/test_trajectory_sim.py
index f3e02f1bef8243f22b54cde5ffba51ce0afb1f9d..8d2302cbaaf1450ac1e39eaa9f9257a4bdb4edef 100644
--- a/test/test_trajectory_sim.py
+++ b/test/test_trajectory_sim.py
@@ -9,6 +9,7 @@ import os
 
 import numpy as np
 import pytest
+
 from habitat.config.default import get_config
 from habitat.sims import make_sim
 from habitat.sims.habitat_simulator import SimulatorActions