complete implementation of profile