less shitty api