refactor: abstract out profiles