Battle update

It's not like i'm specially want to make it harder but here it is.
My main aim of re-factoring. After that i'm going to make something more useful :)

p.s. dunno why there is separated commit.... guess cuz my battle update depends on it...