Of course, things that aren't working properly include spread, collision detection, and collision response. But these are relatively minor things to loading and firing a weapon through the many layers of classes to finally drop the bullet into the game world and let it go free.
There's a lot more to do. But I think that'll do for tonight.