removed Useless Factory Pattern, macroed redundant code