Added ProfileController and ProfileService, part of #44, closes #49