1) re-implemented all profiles, cleaner and more efficient
2) added mock profile and mock implementations