Feature/modularize