form is finally suitable for new API