copied bottom function up