unfinished implementation, commited to clean up repo afterwards