fix return types & arguments