Add completion block and clean code