assert (should check and return or throw smth also?)