Update application structure further. Introduce factories and various methods etc