still reworking error types