Reworked the type public API