Decoupled User logic