implementation + fixes