refactored for less config, composer