started programming abstract weapon class