Design API

Design and implement an API so that the code is useful and easy to use for others.