Refactored a little bit & Added some factories