Now moduler and more readable