Implements #750, use preference activity

Rebased and squashed what @koem submitted in #2948