#ifndef APP_APPLICATION_H_
 #define APP_APPLICATION_H_
 
+#include "fwd.h"
 #include "Input.h"
 #include "Timer.h"
 #include "../sdl/InitScreen.h"
 
 namespace app {
 
-class State;
-
 class Application {
 
 public:
 
 #ifndef APP_APPLICATIONSTATE_H_
 #define APP_APPLICATIONSTATE_H_
 
+#include "fwd.h"
 #include "Timer.h"
 
 #include <SDL.h>
 
 namespace app {
 
-class Application;
-class Input;
-
 class State {
 
 public:
 
--- /dev/null
+/*
+ * fwd.h
+ *
+ *  Created on: Sep 29, 2012
+ *      Author: holy
+ */
+
+#ifndef APP_FWD_H_
+#define APP_FWD_H_
+
+namespace app {
+
+class Application;
+class Arguments;
+class Input;
+class State;
+template<class Time>
+struct TimerData;
+template<class Time>
+class Timer;
+template<class Time>
+class Timers;
+
+}
+
+#endif /* APP_FWD_H_ */
 
 #define BATTLE_ATTACKCHOICE_H_
 
 #include "TargetSelection.h"
-
-namespace common {
-       class Ikari;
-       class Item;
-       class Spell;
-}
+#include "../common/fwd.h"
 
 namespace battle {
 
 
 #ifndef BATTLE_BATTLESTATE_H_
 #define BATTLE_BATTLESTATE_H_
 
+#include "fwd.h"
 #include "AttackTypeMenu.h"
 #include "Hero.h"
 #include "HeroTag.h"
 #include "MoveMenu.h"
 #include "Resources.h"
 #include "SmallHeroTag.h"
+#include "../app/fwd.h"
 #include "../app/State.h"
+#include "../common/fwd.h"
 #include "../geometry/Vector.h"
 #include "../graphics/Animation.h"
+#include "../graphics/fwd.h"
 #include "../graphics/Menu.h"
 
 #include <cassert>
 #include <vector>
 #include <SDL.h>
 
-namespace app { class Input; }
-namespace common {
-       class Inventory;
-       class Item;
-       class Spell;
-}
-namespace graphics {
-       class Font;
-       class Frame;
-       class Gauge;
-       class Sprite;
-}
-
 namespace battle {
 
-class AttackChoice;
-class PartyLayout;
-class Stats;
-
 class BattleState
 : public app::State {
 
 
 #ifndef BATTLE_HERO_H_
 #define BATTLE_HERO_H_
 
+#include "fwd.h"
 #include "AttackChoice.h"
 #include "Stats.h"
+#include "../common/fwd.h"
 #include "../geometry/Vector.h"
 #include "../graphics/Animation.h"
+#include "../graphics/fwd.h"
 #include "../graphics/Menu.h"
 
 #include <vector>
 #include <SDL.h>
 
-namespace common {
-       class Item;
-       class Spell;
-}
-namespace graphics {
-       class Sprite;
-}
-
 namespace battle {
 
-class Resources;
-
 class Hero {
 
 public:
 
 #ifndef BATTLE_HEROTAG_H_
 #define BATTLE_HEROTAG_H_
 
+#include "fwd.h"
 #include "Hero.h"
 #include "../geometry/Vector.h"
+#include "../graphics/fwd.h"
 
 #include <SDL.h>
 
-namespace graphics {
-       class Font;
-       class Frame;
-       class Gauge;
-       class Sprite;
-}
-
 namespace battle {
 
-class BattleState;
-
 class HeroTag {
 
 public:
 
 
 #include "AttackChoice.h"
 #include "Stats.h"
+#include "../common/fwd.h"
 #include "../geometry/Vector.h"
 #include "../graphics/Animation.h"
+#include "../graphics/fwd.h"
 
 #include <SDL.h>
 
-namespace common { class Item; }
-namespace graphics {
-       class Sprite;
-}
-
 namespace battle {
 
 class Monster {
 
 #ifndef BATTLE_NUMBERANIMATION_H_
 #define BATTLE_NUMBERANIMATION_H_
 
-#include "../graphics/Animation.h"
-
+#include "../app/fwd.h"
 #include "../geometry/Vector.h"
-
-namespace app {
-       class Application;
-       class State;
-}
+#include "../graphics/Animation.h"
 
 namespace battle {
 
 
 #ifndef BATTLE_RESOURCES_H_
 #define BATTLE_RESOURCES_H_
 
+#include "../common/fwd.h"
 #include "../graphics/Color.h"
+#include "../graphics/fwd.h"
 #include "../graphics/Menu.h"
 
 #include <SDL.h>
 
-namespace common {
-       class Inventory;
-       class Item;
-       class Spell;
-}
-namespace graphics {
-       class Animation;
-       class Font;
-       class Frame;
-       class Gauge;
-       class Sprite;
-}
-
 namespace battle {
 
 struct Resources {
 
 #ifndef BATTLE_SMALLHEROTAG_H_
 #define BATTLE_SMALLHEROTAG_H_
 
+#include "fwd.h"
 #include "../geometry/Vector.h"
+#include "../graphics/fwd.h"
 
 #include <SDL.h>
 
-namespace graphics {
-       class Font;
-       class Frame;
-       class Gauge;
-}
-
 namespace battle {
 
-class BattleState;
-
 class SmallHeroTag {
 
 public:
 
 #ifndef BATTLE_TARGETSELECTION_H_
 #define BATTLE_TARGETSELECTION_H_
 
-#include <vector>
+#include "fwd.h"
+#include "../common/fwd.h"
 
-namespace common { class TargetingMode; }
+#include <vector>
 
 namespace battle {
 
-class BattleState;
-
 class TargetSelection {
 
 public:
 
--- /dev/null
+/*
+ * fwd.h
+ *
+ *  Created on: Sep 29, 2012
+ *      Author: holy
+ */
+
+#ifndef BATTLE_FWD_H_
+#define BATTLE_FWD_H_
+
+namespace battle {
+
+class AttackChoice;
+class AttackTypeMenu;
+class BattleState;
+class Hero;
+class HeroTag;
+class Monster;
+class MoveMenu;
+class NumberAnimation;
+class PartyLayout;
+class PerformAttacks;
+struct Resources;
+class RunState;
+class SelectAttackType;
+class SelectIkari;
+class SelectItem;
+class SelectMoveAction;
+class SelectSpell;
+class SelectTarget;
+class SmallHeroTag;
+class Stats;
+class SwapHeroes;
+class TargetSelection;
+
+}
+
+#endif /* BATTLE_FWD_H_ */
 
 #ifndef BATTLE_RUNSTATE_H_
 #define BATTLE_RUNSTATE_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
-
 #include "../../geometry/Vector.h"
 
 namespace battle {
 
-class BattleState;
-
 class RunState
 : public app::State {
 
 
 #ifndef BATTLE_SELECTATTACKTYPE_H_
 #define BATTLE_SELECTATTACKTYPE_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
 #include "../../geometry/Vector.h"
 
 namespace battle {
 
-class AttackTypeMenu;
-class BattleState;
-
 class SelectAttackType
 : public app::State {
 
 
 #ifndef BATTLE_SELECTIKARI_H_
 #define BATTLE_SELECTIKARI_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
-
 #include "../../geometry/Vector.h"
 
 namespace battle {
 
-class BattleState;
-class SelectAttackType;
-
 // TODO: looks like item, spell, and ikari select can be merged into one class
 class SelectIkari
 : public app::State {
 
 #ifndef BATTLE_SELECTITEM_H_
 #define BATTLE_SELECTITEM_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
-
 #include "../../geometry/Vector.h"
 
 namespace battle {
 
-class BattleState;
-class SelectAttackType;
-
 class SelectItem
 : public app::State {
 
 
 #ifndef BATTLE_SELECTMOVEACTION_H_
 #define BATTLE_SELECTMOVEACTION_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
 #include "../../geometry/Vector.h"
 
 namespace battle {
 
-class BattleState;
-class MoveMenu;
-
 class SelectMoveAction
 : public app::State {
 
 
 #ifndef BATTLE_SELECTSPELL_H_
 #define BATTLE_SELECTSPELL_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
-
 #include "../../geometry/Vector.h"
 
 namespace battle {
 
-class BattleState;
-class SelectAttackType;
-
 class SelectSpell
 : public app::State {
 
 
 #ifndef BATTLE_SELECTTARGET_H_
 #define BATTLE_SELECTTARGET_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
-
 #include "../../geometry/Vector.h"
-
-namespace graphics { class Sprite; }
+#include "../../graphics/fwd.h"
 
 namespace battle {
 
-class BattleState;
-class TargetSelection;
-class SelectAttackType;
-
 class SelectTarget
 : public app::State {
 
 
 #ifndef BATTLE_SWAPHEROES_H_
 #define BATTLE_SWAPHEROES_H_
 
+#include "../fwd.h"
 #include "../../app/State.h"
-
 #include "../../geometry/Vector.h"
 
 namespace battle {
 
-class BattleState;
-class SelectMoveAction;
-
 class SwapHeroes
 : public app::State {
 
 
 #ifndef COMMON_INVENTORY_H_
 #define COMMON_INVENTORY_H_
 
+#include "fwd.h"
+
 #include <SDL.h>
 
 namespace common {
 
-class Item;
-
 class Inventory {
 
 public:
 
 #ifndef COMMON_ITEM_H_
 #define COMMON_ITEM_H_
 
+#include "fwd.h"
 #include "HeroGroup.h"
 #include "TargetingMode.h"
+#include "../graphics/fwd.h"
 
 #include <SDL.h>
 
-namespace graphics {
-       class Animation;
-       class Sprite;
-}
-
 namespace common {
 
-class Ikari;
-
 class Item {
 
 public:
 
--- /dev/null
+/*
+ * fwd.h
+ *
+ *  Created on: Sep 29, 2012
+ *      Author: holy
+ */
+
+#ifndef COMMON_FWD_H_
+#define COMMON_FWD_H_
+
+namespace common {
+
+class HeroGroup;
+class Ikari;
+class Inventory;
+class Item;
+class Spell;
+class TargetingMode;
+
+}
+
+#endif /* COMMON_FWD_H_ */
 
--- /dev/null
+/*
+ * fwd.h
+ *
+ *  Created on: Sep 29, 2012
+ *      Author: holy
+ */
+
+#ifndef GEOMERTY_FWD_H_
+#define GEOMERTY_FWD_H_
+
+namespace geometry {
+
+template<class Scalar>
+class Vector;
+
+}
+
+#endif /* GEOMERTY_FWD_H_ */
 
 #include "../app/Application.h"
 #include "../app/State.h"
 #include "../app/Timer.h"
+#include "../loader/fwd.h"
 #include "../geometry/Vector.h"
 
 #include <memory>
 #include <SDL.h>
 
-namespace loader {
-       class TypeDescription;
-}
-
 namespace graphics {
 
 class Animation {
 
 #define GRAPHICS_MENU_H_
 
 #include "Font.h"
+#include "fwd.h"
 #include "Sprite.h"
 #include "../geometry/Vector.h"
 
 
 namespace graphics {
 
-class Sprite;
-
 struct MenuProperties {
        const Font *font;
        const Font *disabledFont;
 
--- /dev/null
+/*
+ * fwd.h
+ *
+ *  Created on: Sep 29, 2012
+ *      Author: holy
+ */
+
+#ifndef GRAPHICS_FWD_H_
+#define GRAPHICS_FWD_H_
+
+namespace graphics {
+
+class Animation;
+class AnimationRunner;
+class Color;
+class ComplexAnimation;
+class Font;
+class Frame;
+class Gauge;
+template<class T>
+class Menu;
+struct MenuProperties;
+class SimpleAnimation;
+class Sprite;
+
+}
+
+#endif /* GRAPHICS_FWD_H_ */
 
 #define LOADER_CASTER_H_
 
 #include "Interpreter.h"
+#include "../battle/fwd.h"
+#include "../common/fwd.h"
 
 #include <string>
 
-namespace battle {
-       class Hero;
-       class Monster;
-       class PartyLayout;
-       class Resources;
-}
-
-namespace common {
-       class Item;
-       class Spell;
-}
-
 namespace loader {
 
 class Caster {
 
 #ifndef LOADER_INTERPRETER_H_
 #define LOADER_INTERPRETER_H_
 
+#include "fwd.h"
 #include "ParsedSource.h"
 #include "TypeDescription.h"
+#include "../battle/fwd.h"
+#include "../common/fwd.h"
 #include "../geometry/Vector.h"
 #include "../graphics/Color.h"
 #include "../graphics/ComplexAnimation.h"
+#include "../graphics/fwd.h"
 
 #include <map>
 #include <set>
 #include <vector>
 #include <SDL.h>
 
-namespace battle {
-       class Hero;
-       class Monster;
-       class PartyLayout;
-       struct Resources;
-       class Stats;
-}
-
-namespace common {
-       class Ikari;
-       class Item;
-       class Spell;
-       class TargetingMode;
-}
-
-namespace graphics {
-       class Animation;
-       class Font;
-       class Frame;
-       class Gauge;
-       struct MenuProperties;
-       class SimpleAnimation;
-       class Sprite;
-}
-
 namespace loader {
 
-class Definition;
-class Literal;
-class PropertyList;
-class Value;
-
 class Interpreter {
 
 public:
 
 #ifndef LOADER_PARSEDSOURCE_H_
 #define LOADER_PARSEDSOURCE_H_
 
+#include "fwd.h"
+
 #include <iosfwd>
 #include <map>
 #include <set>
 
 namespace loader {
 
-class PropertyList;
-class Value;
-
 class Literal {
 
 public:
 
 #ifndef LOADER_PARSER_H_
 #define LOADER_PARSER_H_
 
+#include "fwd.h"
 #include "ParsedSource.h"
 #include "Tokenizer.h"
 
 
 namespace loader {
 
-class Declaration;
-class Definition;
-class Literal;
-class PropertyList;
-
 class Parser {
 
 public:
 
--- /dev/null
+/*
+ * fwd.h
+ *
+ *  Created on: Sep 29, 2012
+ *      Author: holy
+ */
+
+#ifndef LOADER_FWD_H_
+#define LOADER_FWD_H_
+
+namespace loader {
+
+class Caster;
+class Declaration;
+class Definition;
+class FieldDescription;
+class Interpreter;
+class Literal;
+class ParsedSource;
+class Parser;
+class PropertyList;
+class Tokenizer;
+class TypeDescription;
+class Value;
+
+}
+
+#endif /* LOADER_FWD_H_ */