Change interfaces to be more fluent

Change the interfaces to be more fluent but keep backward compatibility.