making easy for clients to implement