Revision of API (not finished)