Made everything lazy to avoid null pointer exceptions
Added strategy abstraction and implemented 2 strategies