Separate front-end and back-end of handle implementation.
As part of legacy/trac#29218 (moved), we should separate the interface and implementation parts of our handle code, so we can support multiple implementations.
As part of legacy/trac#29218 (moved), we should separate the interface and implementation parts of our handle code, so we can support multiple implementations.