Asteroid + some refactoring