implementing proper API

for reals this time