Simple implementation, needs testing still.