Revert "Revert "Basic interfaces""

This reverts commit 9b2f58c9dc6a040ecb7ad5d2b68d3bb87cf59317.
Revert "Revert "Revert "Basic interfaces"""

This reverts commit 74168298e155100d761aeaa540e9a88571d4a432.
Revert "Revert "Revert "Revert "Basic interfaces""""

This reverts commit 019c6a3ba6986bfff71d7f9bf0ed6aaa9a3ab3e7.