refactored the full functionality and added a method to raise an error if station is full