Thinks to improve when implementing the production ready library: * make api more generic (smaller)